[Ttssh2-commit] [5643] チケット #34056 SCPダウンロードすると応答なしになる

svnno****@sourc***** svnno****@sourc*****
2014年 7月 29日 (火) 23:07:31 JST


Revision: 5643
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5643
Author:   yutakapon
Date:     2014-07-29 23:07:28 +0900 (Tue, 29 Jul 2014)
Log Message:
-----------
チケット #34056 SCPダウンロードすると応答なしになる
チケット #32992 SSH SCPでファイル転送中、画面を最小化すると転送処理が強制終了される
チケット #33954 タスクスケジューラからscprecvが動作しない。

上記問題に対処するため、SCP処理のキャンセル方法を変更した。

Ticket Links:
------------
    http://sourceforge.jp/projects/ttssh2/tracker/detail/34056
    http://sourceforge.jp/projects/ttssh2/tracker/detail/32992
    http://sourceforge.jp/projects/ttssh2/tracker/detail/33954

Modified Paths:
--------------
    trunk/ttssh2/ttxssh/ssh.c

-------------- next part --------------
Modified: trunk/ttssh2/ttxssh/ssh.c
===================================================================
--- trunk/ttssh2/ttxssh/ssh.c	2014-07-13 09:11:04 UTC (rev 5642)
+++ trunk/ttssh2/ttxssh/ssh.c	2014-07-29 14:07:28 UTC (rev 5643)
@@ -7615,6 +7615,7 @@
 
 #define WM_SENDING_FILE (WM_USER + 1)
 #define WM_CHANNEL_CLOSE (WM_USER + 2)
+#define WM_GET_CLOSED_STATUS (WM_USER + 3)
 
 typedef struct scp_dlg_parm {
 	Channel_t *c;
@@ -7625,9 +7626,11 @@
 
 static LRESULT CALLBACK ssh_scp_dlg_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
 {
+	static int closed = 0;
 
 	switch (msg) {
 		case WM_INITDIALOG:
+			closed = 0;
 			return FALSE;
 
 		// SCP\x83t\x83@\x83C\x83\x8B\x8E\xF3\x90M(remote-to-local)\x8E\x9E\x81A\x8Eg\x97p\x82\xB7\x82\xE9\x81B
@@ -7666,6 +7669,7 @@
 					//EndDialog(hWnd, 0);
 					//DestroyWindow(hWnd);
 					ShowWindow(hWnd, SW_HIDE);
+					closed = 1;
 					return TRUE;
 				default:
 					return FALSE;
@@ -7679,6 +7683,16 @@
 		case WM_DESTROY:
 			return TRUE;
 
+		case WM_GET_CLOSED_STATUS:
+			{
+			int *flag = (int *)wp;
+
+
+
+			*flag = closed;
+			}
+			return TRUE;
+
 		default:
 			return FALSE;
 	}
@@ -7687,22 +7701,13 @@
 
 static int is_canceled_window(HWND hd)
 {
-	// \x8Dŏ\xAC\x89\xBB\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x82Ƃ\xAB\x82́A\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82ł͂Ȃ\xA2\x81B
-	if (IsIconic(hd))
-		return 0;
-	// \x83E\x83B\x83\x93\x83h\x83E\x82\xAA\x8C\xA9\x82\xA6\x82Ȃ\xAD\x82Ȃ\xC1\x82\xBD\x82\xE7\x81A\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82\xB3\x82ꂽ\x81B
-	if (IsWindow(hd) == 0)
-		return 1;
-	// \x83E\x83B\x83\x93\x83h\x83E\x82\xAA\x94\xF1\x95\\x8E\xA6\x82̏ꍇ\x81A\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82\xB3\x82ꂽ\x89”\\x90\xAB\x82\xAA\x82\xA0\x82\xE9\x81B
-	if (IsWindowVisible(hd) == 0) {
-		HWND p = GetParent(hd);
-		// \x90e\x83E\x83B\x83\x93\x83h\x83E\x82\xAA\x8Dŏ\xAC\x89\xBB\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x82Ƃ\xAB\x82́A\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82ł͂Ȃ\xA2\x81B
-		if (IsIconic(p))
-			return 0;
+	int closed = 0;
 
+	SendMessage(hd, WM_GET_CLOSED_STATUS, (WPARAM)&closed, 0);
+	if (closed)
 		return 1;
-	}
-	return 0;
+	else
+		return 0;
 }
 
 void InitDlgProgress(HWND HDlg, int id_Progress, int *CurProgStat) {



Ttssh2-commit メーリングリストの案内