[Ttssh2-commit] [4863] 一度確立した名前付きパイプが、切断された場合に対する考慮が漏れていたので、処理を追加した。

svnno****@sourc***** svnno****@sourc*****
2012年 3月 11日 (日) 21:01:11 JST


Revision: 4863
          http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4863
Author:   yutakapon
Date:     2012-03-11 21:01:10 +0900 (Sun, 11 Mar 2012)
Log Message:
-----------
一度確立した名前付きパイプが、切断された場合に対する考慮が漏れていたので、処理を追加した。
  - スレッドの終了エラーコードの修正およびFD_CLOSE処理
  - 送信処理のエラーチェックバグ修正

Modified Paths:
--------------
    trunk/teraterm/teraterm/commlib.c

-------------- next part --------------
Modified: trunk/teraterm/teraterm/commlib.c
===================================================================
--- trunk/teraterm/teraterm/commlib.c	2012-03-10 13:25:39 UTC (rev 4862)
+++ trunk/teraterm/teraterm/commlib.c	2012-03-11 12:01:10 UTC (rev 4863)
@@ -675,8 +675,9 @@
 			WaitForSingleObject(REnd,INFINITE);
 		}
 		else {
-			DErr = GetLastError();  // this returns 995 (operation aborted) if a USB com port is removed
-			if (! cv->Ready || ERROR_OPERATION_ABORTED == DErr) {
+			DErr = GetLastError();  // this returns 109 (broken pipe) if a named pipe is removed.
+			if (! cv->Ready || ERROR_BROKEN_PIPE == DErr) {
+				PostMessage(cv->HWin, WM_USER_COMMNOTIFY, 0, FD_CLOSE);
 				_endthread();
 			}
 		}
@@ -1192,7 +1193,9 @@
 
 		case IdNamedPipe:
 			if (! PWriteFile(cv->ComID, &(cv->OutBuff[cv->OutPtr]), C, (LPDWORD)&D, NULL)) {
-				if (! GetLastError() == ERROR_IO_PENDING) {
+				// ERROR_IO_PENDING \x88ȊO\x82̃G\x83\x89\x81[\x82\xBE\x82\xC1\x82\xBD\x82\xE7\x81A\x83p\x83C\x83v\x82\xAA\x83N\x83\x8D\x81[\x83Y\x82\xB3\x82\xEA\x82Ă\xA2\x82邩\x82\xE0\x82\xB5\x82\xEA\x82Ȃ\xA2\x82\xAA\x81A
+				// \x91\x97\x90M\x82ł\xAB\x82\xBD\x82\xB1\x82Ƃɂ\xB7\x82\xE9\x81B
+				if (! (GetLastError() == ERROR_IO_PENDING)) {
 					D = C; /* ignore data */
 				}
 			}



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