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 2925 by maya, Sun Oct 29 22:42:12 2006 UTC revision 2926 by maya, Mon Oct 30 08:48:02 2006 UTC
# Line 1379  static void init_protocol(PTInstVar pvar Line 1379  static void init_protocol(PTInstVar pvar
1379                  enque_handler(pvar, SSH2_MSG_CHANNEL_CLOSE, handle_SSH2_channel_close);                  enque_handler(pvar, SSH2_MSG_CHANNEL_CLOSE, handle_SSH2_channel_close);
1380                  enque_handler(pvar, SSH2_MSG_CHANNEL_DATA, handle_SSH2_channel_data);                  enque_handler(pvar, SSH2_MSG_CHANNEL_DATA, handle_SSH2_channel_data);
1381                  enque_handler(pvar, SSH2_MSG_CHANNEL_EOF, handle_SSH2_channel_eof);                  enque_handler(pvar, SSH2_MSG_CHANNEL_EOF, handle_SSH2_channel_eof);
1382  //              enque_handler(pvar, SSH2_MSG_CHANNEL_EXTENDED_DATA, handle_SSH2_channel_extended_data);                  enque_handler(pvar, SSH2_MSG_CHANNEL_EXTENDED_DATA, handle_SSH2_channel_extended_data);
1383                  enque_handler(pvar, SSH2_MSG_CHANNEL_OPEN, handle_SSH2_channel_open);                  enque_handler(pvar, SSH2_MSG_CHANNEL_OPEN, handle_SSH2_channel_open);
1384                  enque_handler(pvar, SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, handle_SSH2_open_confirm);                  enque_handler(pvar, SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, handle_SSH2_open_confirm);
1385                  enque_handler(pvar, SSH2_MSG_CHANNEL_OPEN_FAILURE, handle_SSH2_open_failure);                  enque_handler(pvar, SSH2_MSG_CHANNEL_OPEN_FAILURE, handle_SSH2_open_failure);
# Line 6595  static BOOL handle_SSH2_channel_data(PTI Line 6595  static BOOL handle_SSH2_channel_data(PTI
6595          // ペイロードとしてクライアント(TeraTerm)へ渡す          // ペイロードとしてクライアント(TeraTerm)へ渡す
6596          if (c->type == TYPE_SHELL) {          if (c->type == TYPE_SHELL) {
6597                  pvar->ssh_state.payload_datalen = strlen;                  pvar->ssh_state.payload_datalen = strlen;
6598                  pvar->ssh_state.payload_datastart = 8;                  pvar->ssh_state.payload_datastart = 8; // id + strlen
6599    
6600          } else {          } else {
6601                  //debug_print(0, data, strlen);                  //debug_print(0, data, strlen);
# Line 6614  static BOOL handle_SSH2_channel_data(PTI Line 6614  static BOOL handle_SSH2_channel_data(PTI
6614  }  }
6615    
6616    
6617    // Tectia Server の Windows 版は、DOSコマンドが失敗したときにstderrに出力される
6618    // エラーメッセージを SSH2_MSG_CHANNEL_EXTENDED_DATA で送信してくる。
6619    // SSH2_MSG_CHANNEL_EXTENDED_DATA を処理するようにした。(2006.10.30 maya)
6620  static BOOL handle_SSH2_channel_extended_data(PTInstVar pvar)  static BOOL handle_SSH2_channel_extended_data(PTInstVar pvar)
6621  {        {      
6622            int len;
6623            char *data;
6624            int id;
6625            unsigned int strlen;
6626            Channel_t *c;
6627            int data_type;
6628    
6629            // 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード
6630            data = pvar->ssh_state.payload;
6631            // パケットサイズ - (パディングサイズ+1);真のパケットサイズ
6632            len = pvar->ssh_state.payloadlen;
6633    
6634            //debug_print(80, data, len);
6635    
6636            // channel number
6637            id = get_uint32_MSBfirst(data);
6638            data += 4;
6639    
6640            c = ssh2_channel_lookup(id);
6641            if (c == NULL) {
6642                    // TODO:
6643                    return FALSE;
6644            }
6645    
6646            // data_type_code
6647            data_type = get_uint32_MSBfirst(data);
6648            data += 4;
6649    
6650            // string length
6651            strlen = get_uint32_MSBfirst(data);
6652            data += 4;
6653    
6654            // バッファサイズのチェック
6655            if (strlen > c->local_window_max) {
6656                    // TODO: logging
6657            }
6658            if (strlen > c->local_window) {
6659                    // TODO: logging
6660                    // local window sizeより大きなパケットは捨てる
6661                    return FALSE;
6662            }
6663    
6664            // ペイロードとしてクライアント(TeraTerm)へ渡す
6665            if (c->type == TYPE_SHELL) {
6666                    pvar->ssh_state.payload_datalen = strlen;
6667                    pvar->ssh_state.payload_datastart = 12; // id + data_type + strlen
6668    
6669            } else {
6670                    //debug_print(0, data, strlen);
6671                    FWD_received_data(pvar, c->local_num, data, strlen);
6672    
6673            }
6674    
6675            //debug_print(200, data, strlen);
6676    
6677            // ウィンドウサイズの調整
6678            c->local_window -= strlen;
6679    
6680            do_SSH2_adjust_window_size(pvar, c);
6681    
6682          return TRUE;          return TRUE;
6683  }  }
# Line 6895  static BOOL handle_SSH2_window_adjust(PT Line 6956  static BOOL handle_SSH2_window_adjust(PT
6956    
6957  /*  /*
6958   * $Log: not supported by cvs2svn $   * $Log: not supported by cvs2svn $
6959     * Revision 1.56  2006/10/29 22:42:12  maya
6960     * 圧縮の初期化を SSH2_MSG_NEWKEYS の送信時に変更した。
6961     *
6962   * Revision 1.55  2006/10/29 17:26:47  yutakapon   * Revision 1.55  2006/10/29 17:26:47  yutakapon
6963   *   ・MACとパケット圧縮を有効にするタイミングを SSH2_MSG_NEWKEYS の送受信時に変更することにより、Tectiva serverへつながらない問題を修正した。   *   ・MACとパケット圧縮を有効にするタイミングを SSH2_MSG_NEWKEYS の送受信時に変更することにより、Tectiva serverへつながらない問題を修正した。
6964   *   *

Legend:
Removed from v.2925  
changed lines
  Added in v.2926

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