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 6715 by doda, Fri May 12 12:41:55 2017 UTC revision 6717 by doda, Fri May 12 12:42:07 2017 UTC
# Line 6799  static BOOL handle_SSH2_userauth_success Line 6799  static BOOL handle_SSH2_userauth_success
6799          // FWD_prep_forwarding()でshell IDを使うので、先に設定を持ってくる。(2005.7.3 yutaka)          // FWD_prep_forwarding()でshell IDを使うので、先に設定を持ってくる。(2005.7.3 yutaka)
6800          // changed window size from 64KB to 32KB. (2006.3.6 yutaka)          // changed window size from 64KB to 32KB. (2006.3.6 yutaka)
6801          // changed window size from 32KB to 128KB. (2007.10.29 maya)          // changed window size from 32KB to 128KB. (2007.10.29 maya)
6802          c = ssh2_channel_new(CHAN_SES_WINDOW_DEFAULT, CHAN_SES_PACKET_DEFAULT, TYPE_SHELL, -1);          if (pvar->use_subsystem) {
6803                    c = ssh2_channel_new(CHAN_SES_WINDOW_DEFAULT, CHAN_SES_PACKET_DEFAULT, TYPE_SUBSYSTEM_GEN, -1);
6804            }
6805            else {
6806                    c = ssh2_channel_new(CHAN_SES_WINDOW_DEFAULT, CHAN_SES_PACKET_DEFAULT, TYPE_SHELL, -1);
6807            }
6808    
6809          if (c == NULL) {          if (c == NULL) {
6810                  UTIL_get_lang_msg("MSG_SSH_NO_FREE_CHANNEL", pvar,                  UTIL_get_lang_msg("MSG_SSH_NO_FREE_CHANNEL", pvar,
6811                                    "Could not open new channel. TTSSH is already opening too many channels.");                                    "Could not open new channel. TTSSH is already opening too many channels.");
# Line 7541  static BOOL handle_SSH2_open_confirm(PTI Line 7547  static BOOL handle_SSH2_open_confirm(PTI
7547          buffer_put_int(msg, remote_id);          buffer_put_int(msg, remote_id);
7548          if (c->type == TYPE_SCP) {          if (c->type == TYPE_SCP) {
7549                  s = "exec";                  s = "exec";
7550          } else if (c->type == TYPE_SFTP) {          } else if (c->type == TYPE_SFTP || c->type == TYPE_SUBSYSTEM_GEN) {
7551                  s = "subsystem";                  s = "subsystem";
7552          } else {          } else {
7553                  s = "";  // NOT REACHED                  s = "";  // NOT REACHED
# Line 7566  static BOOL handle_SSH2_open_confirm(PTI Line 7572  static BOOL handle_SSH2_open_confirm(PTI
7572                  char *sbuf = "sftp";                  char *sbuf = "sftp";
7573                  buffer_put_string(msg, sbuf, strlen(sbuf));                  buffer_put_string(msg, sbuf, strlen(sbuf));
7574          }          }
7575            else if (c->type == TYPE_SUBSYSTEM_GEN) {
7576                    buffer_put_string(msg, pvar->subsystem_name, strlen(pvar->subsystem_name));
7577                    pvar->session_nego_status = 0;
7578            }
7579    
7580          len = buffer_len(msg);          len = buffer_len(msg);
7581          outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_REQUEST, len);          outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_REQUEST, len);
# Line 7831  static BOOL handle_SSH2_channel_failure( Line 7841  static BOOL handle_SSH2_channel_failure(
7841                  return FALSE;                  return FALSE;
7842          }          }
7843    
7844          if (pvar->session_nego_status == 1 && pvar->shell_id == channel_id) {          if (pvar->shell_id == channel_id) {
7845                  // リモートで auth-agent-req@openssh.com がサポートされてないので                  if (c->type == TYPE_SUBSYSTEM_GEN) {
7846                  // エラーは気にせず次へ進む                          // サブシステムの起動に失敗したので切る。
7847                            notify_fatal_error(pvar, "subsystem request failed.", 1);
7848                  strncpy_s(buf, sizeof(buf),                          return TRUE;
7849                            "auth-agent-req@openssh.com is not supported by remote host.",                  }
7850                            _TRUNCATE);                  else { // TYPE_SHELL
7851                  notify_verbose_message(pvar, buf, LOG_LEVEL_VERBOSE);                          if (pvar->session_nego_status == 1) {
7852                                    // リモートで auth-agent-req@openssh.com がサポートされてないので
7853                                    // エラーは気にせず次へ進む
7854    
7855                                    strncpy_s(buf, sizeof(buf),
7856                                              "auth-agent-req@openssh.com is not supported by remote host.",
7857                                              _TRUNCATE);
7858                                    notify_verbose_message(pvar, buf, LOG_LEVEL_VERBOSE);
7859    
7860                  return send_pty_request(pvar, c);                                  return send_pty_request(pvar, c);
7861                            }
7862                    }
7863          }          }
7864    
7865          ssh2_channel_delete(c);          ssh2_channel_delete(c);
# Line 8608  static BOOL handle_SSH2_channel_data(PTI Line 8627  static BOOL handle_SSH2_channel_data(PTI
8627          }          }
8628    
8629          // ペイロードとしてクライアント(Tera Term)へ渡す          // ペイロードとしてクライアント(Tera Term)へ渡す
8630          if (c->type == TYPE_SHELL) {          if (c->type == TYPE_SHELL || c->type == TYPE_SUBSYSTEM_GEN) {
8631                  pvar->ssh_state.payload_datalen = str_len;                  pvar->ssh_state.payload_datalen = str_len;
8632                  pvar->ssh_state.payload_datastart = 8; // id + strlen                  pvar->ssh_state.payload_datastart = 8; // id + strlen
8633    
# Line 8689  static BOOL handle_SSH2_channel_extended Line 8708  static BOOL handle_SSH2_channel_extended
8708          }          }
8709    
8710          // ペイロードとしてクライアント(Tera Term)へ渡す          // ペイロードとしてクライアント(Tera Term)へ渡す
8711          if (c->type == TYPE_SHELL) {          if (c->type == TYPE_SHELL || c->type == TYPE_SUBSYSTEM_GEN) {
8712                  pvar->ssh_state.payload_datalen = strlen;                  pvar->ssh_state.payload_datalen = strlen;
8713                  pvar->ssh_state.payload_datastart = 12; // id + data_type + strlen                  pvar->ssh_state.payload_datastart = 12; // id + data_type + strlen
8714    
# Line 8934  static BOOL handle_SSH2_channel_close(PT Line 8953  static BOOL handle_SSH2_channel_close(PT
8953          _snprintf_s(log, sizeof(log), _TRUNCATE, "SSH2_MSG_CHANNEL_CLOSE was received. local:%d remote:%d", c->self_id, c->remote_id);          _snprintf_s(log, sizeof(log), _TRUNCATE, "SSH2_MSG_CHANNEL_CLOSE was received. local:%d remote:%d", c->self_id, c->remote_id);
8954          notify_verbose_message(pvar, log, LOG_LEVEL_VERBOSE);          notify_verbose_message(pvar, log, LOG_LEVEL_VERBOSE);
8955    
8956          if (c->type == TYPE_SHELL) {          if (c->type == TYPE_SHELL || c->type == TYPE_SUBSYSTEM_GEN) {
8957                  ssh2_channel_send_close(pvar, c);                  ssh2_channel_send_close(pvar, c);
8958    
8959                  // TCP connection closed                  // TCP connection closed

Legend:
Removed from v.6715  
changed lines
  Added in v.6717

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