[Ttssh2-commit] [5610] チケット #33822

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2014年 6月 18日 (水) 00:38:04 JST


Revision: 5610
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5610
Author:   yutakapon
Date:     2014-06-18 00:37:55 +0900 (Wed, 18 Jun 2014)
Log Message:
-----------
チケット #33822
UTIL_sock_buffered_write 関数にコメントを付与した。
まだ調査中だが、やはり実装がおかしいような感じなので、完全調査完了後、
是正を行う予定。

Ticket Links:
------------
    http://sourceforge.jp/projects/ttssh2/tracker/detail/33822

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

-------------- next part --------------
Modified: trunk/ttssh2/ttxssh/util.c
===================================================================
--- trunk/ttssh2/ttxssh/util.c	2014-06-07 15:24:54 UTC (rev 5609)
+++ trunk/ttssh2/ttxssh/util.c	2014-06-17 15:37:55 UTC (rev 5610)
@@ -64,6 +64,19 @@
 	return total_sent;
 }
 
+/* Tera Term\x82\xAA\x93\xAE\x8D삵\x82Ă\xA2\x82\xE9PC\x8F\xE3\x82\xCC X \x83T\x81[\x83o\x83v\x83\x8D\x83O\x83\x89\x83\x80\x82ɑ΂\xB5\x82āA\x83f\x81[\x83^\x82𑗂\xE9\x81B
+ * \x88\xEA\x93x\x82ő\x97\x82\xEA\x82Ȃ\xA2\x8Fꍇ\x82́A\x83\x8A\x83\x93\x83O\x83o\x83b\x83t\x83@\x82Ɋi\x94[\x82\xB5\x81A\x92x\x89\x84\x94z\x91\x97\x82\xB7\x82\xE9\x81B 
+ *
+ * pvar: \x8B\xA4\x97L\x83\x8A\x83\\x81[\x83X
+ * buf: \x83\x8A\x83\x93\x83O\x83o\x83b\x83t\x83@
+ * blocking_write: \x93\xAF\x8A\xFA\x8C^\x82̃p\x83P\x83b\x83g\x91\x97\x90M\x8A֐\x94
+ * socket: \x94񓯊\xFA\x8C^\x82̃\\x83P\x83b\x83g\x83n\x83\x93\x83h\x83\x8B
+ * data: \x83f\x81[\x83^
+ * len: \x83f\x81[\x83^\x92\xB7
+ *
+ * return TRUE: \x91\x97\x90M\x90\xAC\x8C\xF7
+ *        FALSE: \x91\x97\x90M\x83G\x83\x89\x81[
+ */
 BOOL UTIL_sock_buffered_write(PTInstVar pvar, UTILSockWriteBuf FAR * buf,
                               UTILBlockingWriteCallback blocking_write,
                               SOCKET socket, const char FAR * data,
@@ -77,9 +90,14 @@
 	int first_copy_start;
 	int first_copy_amount;
 
+	// \x8F\x89\x89\xF1\x8CĂяo\x82\xB5\x8E\x9E\x82́A\x82\xA9\x82Ȃ炸\x89\xBA\x8BL if \x95\xB6\x82ɓ\xFC\x82\xE9\x81B
 	/* Fast path case: buffer is empty, try nonblocking write */
 	if (buf->datalen == 0) {
 #if 1
+		// \x82܂\xB8\x82\xCD non-blocking \x82Ńp\x83P\x83b\x83g\x91\x97\x90M\x82\xB7\x82\xE9\x81B\x88\xEA\x93x\x82ł\xE0 WSAEWOULDBLOCK \x83G\x83\x89\x81[\x82ɂȂ\xC1\x82\xBD\x82\xE7\x81A
+		// \x8A֐\x94\x82́u\x91\x97\x90M\x8Dς݃f\x81[\x83^\x92\xB7\x81v\x82\xF0\x95Ԃ\xB7\x81B
+		// \x82\xBD\x82Ƃ\xA6\x82΁AX \x83T\x81[\x83o\x83v\x83\x8D\x83O\x83\x89\x83\x80\x82Ƃ\xB5\x82\xC4"xterm"\x82\xF0\x8BN\x93\xAE\x82\xB5\x82Ă\xA2\x82\xBD\x8Fꍇ\x81Axterm\x82̒[\x96\x96\x93\xE0\x82ɉ\xBD\x82\xA9
+		// \x95\xB6\x8E\x9A\x82\xF0\x95\\x8E\xA6\x82\xB5\x91\xB1\x82\xAF\x82Ă\xA2\x82\xE9\x8F\xF3\x91ԂŁA\x92[\x96\x96\x82̃E\x83B\x83\x93\x83h\x83E\x82\xF0\x83h\x83\x89\x83b\x83O\x82\xB7\x82\xE9\x82ƁA\x8A֐\x94\x82\xCD 0 \x82\xF0\x95Ԃ\xB5\x82Ă\xAD\x82\xE9\x81B
 		int sent_amount = send_until_block(pvar, socket, data, len);
 
 		if (sent_amount < 0) {
@@ -106,10 +124,40 @@
 #endif
 	}
 
+	// \x8F\x89\x89\xF1\x8CĂяo\x82\xB5\x8E\x9E\x82\xCC non-blocking \x91\x97\x90M\x82ŁA\x82\xB7\x82ׂđ\x97\x82\xE8\x90؂ꂽ\x82\xE7\x81A\x91\xA6\x8D\xC0\x82ɐ\xAC\x8C\xF7\x82ŕԂ\xE9\x81B
 	if (len == 0) {
 		return TRUE;
 	}
 
+	// \x83\x8A\x83\x93\x83O\x83o\x83b\x83t\x83@(buf)\x82Ɏc\x91\xB6\x82\xB5\x82Ă\xA2\x82\xE9\x83f\x81[\x83^\x82ƁA\x90V\x8BK\x91\x97\x90M\x83f\x81[\x83^\x82𑫂\xB5\x82\xC4(desiredlen)\x81A
+	// \x8C\xBB\x8D݂̃o\x83b\x83t\x83@\x92\xB7(curlen)\x82\xAA\x91\xAB\x82\xE8\x82邩\x82\xF0\x8Cv\x8EZ\x82\xB7\x82\xE9\x81B
+	//
+	// (1)\x83f\x81[\x83^\x82\xAA\x90擪\x82Ɋi\x94[\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x83P\x81[\x83X
+	//
+	//                 <----- buflen ------------->
+	// buf->bufdata -> +--------------------------+
+	//                 |XXXXXXX                   |
+	//                 +--------------------------+ 
+	//                 <------>
+	//                   buf->datalen
+	//                 ^
+	//                 |
+	//                 buf->datastart
+	//
+	//
+	// (2)\x83f\x81[\x83^\x82\xAA\x97\xBC\x92[\x82Ɋi\x94[\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x83P\x81[\x83X
+	//
+	//                 <----- buflen ------------->
+	// buf->bufdata -> +--------------------------+
+	//                 |XXXX                  XXXX|
+	//                 +--------------------------+ 
+	//                 <--->                  <-->
+	//                  (a)                    (b)
+	//                      (a)+(b) = buf->datalen
+	//                                        ^
+	//                                        |
+	//                                       buf->datastart
+	//
 	/* We blocked or the buffer has data in it. We need to put this data
 	   into the buffer.
 	   First, expand buffer as much as possible and necessary. */



Ttssh2-commit メーリングリストの案内
Back to archive index