Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/ssh.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2943 by maya, Wed Dec 6 14:25:40 2006 UTC revision 2945 by yutakapon, Fri Dec 8 16:11:54 2006 UTC
# Line 758  static unsigned char FAR *begin_send_pac Line 758  static unsigned char FAR *begin_send_pac
758    
759  #define finish_send_packet(pvar) finish_send_packet_special((pvar), 0)  #define finish_send_packet(pvar) finish_send_packet_special((pvar), 0)
760    
761    // 送信リトライ関数の追加
762    //
763    // WinSockの send() はバッファサイズ(len)よりも少ない値を正常時に返してくる
764    // ことがあるので、その場合はエラーとしない。
765    // これにより、TCPコネクション切断の誤検出を防ぐ。
766    // (2006.12.9 yutaka)
767    static int retry_send_packet(PTInstVar pvar, char FAR * data, int len)
768    {
769            int n;
770    
771            while (len > 0) {
772                    n = (pvar->Psend)(pvar->socket, data, len, 0);
773                    if (n == SOCKET_ERROR || n <= 0)
774                            return 1; // error
775                    len -= n;
776                    data += n;
777            }
778            return 0; // success
779    }
780    
781  static BOOL send_packet_blocking(PTInstVar pvar, char FAR * data, int len)  static BOOL send_packet_blocking(PTInstVar pvar, char FAR * data, int len)
782  {  {
783          u_long do_block = 0;          u_long do_block = 0;
# Line 765  static BOOL send_packet_blocking(PTInstV Line 785  static BOOL send_packet_blocking(PTInstV
785          if ((pvar->PWSAAsyncSelect) (pvar->socket, pvar->NotificationWindow,          if ((pvar->PWSAAsyncSelect) (pvar->socket, pvar->NotificationWindow,
786                                                                   0, 0) == SOCKET_ERROR                                                                   0, 0) == SOCKET_ERROR
787                  || ioctlsocket(pvar->socket, FIONBIO, &do_block) == SOCKET_ERROR                  || ioctlsocket(pvar->socket, FIONBIO, &do_block) == SOCKET_ERROR
788                  || (pvar->Psend) (pvar->socket, data, len, 0) != len                  || retry_send_packet(pvar, data, len)
789                  || (pvar->PWSAAsyncSelect) (pvar->socket, pvar->NotificationWindow,                  || (pvar->PWSAAsyncSelect) (pvar->socket, pvar->NotificationWindow,
790                                                                          pvar->notification_msg,                                                                          pvar->notification_msg,
791                                                                          pvar->notification_events) ==                                                                          pvar->notification_events) ==
# Line 7220  static BOOL handle_SSH2_window_adjust(PT Line 7240  static BOOL handle_SSH2_window_adjust(PT
7240    
7241  /*  /*
7242   * $Log: not supported by cvs2svn $   * $Log: not supported by cvs2svn $
7243     * Revision 1.68  2006/12/06 14:25:40  maya
7244     * 表示メッセージの読み込み対応
7245     *
7246   * Revision 1.67  2006/12/05 09:20:36  maya   * Revision 1.67  2006/12/05 09:20:36  maya
7247   * 表示メッセージの読み込み対応   * 表示メッセージの読み込み対応
7248   *   *

Legend:
Removed from v.2943  
changed lines
  Added in v.2945

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26