| 2848 |
pvar->tryed_ssh2_authlist = FALSE; |
pvar->tryed_ssh2_authlist = FALSE; |
| 2849 |
pvar->agentfwd_enable = FALSE; |
pvar->agentfwd_enable = FALSE; |
| 2850 |
pvar->use_subsystem = FALSE; |
pvar->use_subsystem = FALSE; |
| 2851 |
|
pvar->nosession = FALSE; |
| 2852 |
|
|
| 2853 |
} |
} |
| 2854 |
|
|
| 3323 |
&pvar->ssh_state.postdecompress_inbuflen); |
&pvar->ssh_state.postdecompress_inbuflen); |
| 3324 |
pvar->agentfwd_enable = FALSE; |
pvar->agentfwd_enable = FALSE; |
| 3325 |
pvar->use_subsystem = FALSE; |
pvar->use_subsystem = FALSE; |
| 3326 |
|
pvar->nosession = FALSE; |
| 3327 |
|
|
| 3328 |
// support of "Compression delayed" (2006.6.23 maya) |
// support of "Compression delayed" (2006.6.23 maya) |
| 3329 |
if (pvar->ssh_state.compressing || |
if (pvar->ssh_state.compressing || |
| 6775 |
// 認証OK |
// 認証OK |
| 6776 |
pvar->userauth_success = 1; |
pvar->userauth_success = 1; |
| 6777 |
|
|
|
// チャネル設定 |
|
|
// FWD_prep_forwarding()でshell IDを使うので、先に設定を持ってくる。(2005.7.3 yutaka) |
|
|
// changed window size from 64KB to 32KB. (2006.3.6 yutaka) |
|
|
// changed window size from 32KB to 128KB. (2007.10.29 maya) |
|
|
if (pvar->use_subsystem) { |
|
|
c = ssh2_channel_new(CHAN_SES_WINDOW_DEFAULT, CHAN_SES_PACKET_DEFAULT, TYPE_SUBSYSTEM_GEN, -1); |
|
|
} |
|
|
else { |
|
|
c = ssh2_channel_new(CHAN_SES_WINDOW_DEFAULT, CHAN_SES_PACKET_DEFAULT, TYPE_SHELL, -1); |
|
|
} |
|
|
|
|
|
if (c == NULL) { |
|
|
UTIL_get_lang_msg("MSG_SSH_NO_FREE_CHANNEL", pvar, |
|
|
"Could not open new channel. TTSSH is already opening too many channels."); |
|
|
notify_fatal_error(pvar, pvar->ts->UIMsg, TRUE); |
|
|
return FALSE; |
|
|
} |
|
|
// シェルのIDを取っておく |
|
|
pvar->shell_id = c->self_id; |
|
|
|
|
| 6778 |
// ディスパッチルーチンの再設定 |
// ディスパッチルーチンの再設定 |
| 6779 |
do_SSH2_dispatch_setup_for_transfer(pvar); |
do_SSH2_dispatch_setup_for_transfer(pvar); |
| 6780 |
|
|
| 6781 |
// シェルオープン |
if (!pvar->nosession) { |
| 6782 |
msg = buffer_init(); |
// チャネル設定 |
| 6783 |
if (msg == NULL) { |
// FWD_prep_forwarding()でshell IDを使うので、先に設定を持ってくる。(2005.7.3 yutaka) |
| 6784 |
// TODO: error check |
// changed window size from 64KB to 32KB. (2006.3.6 yutaka) |
| 6785 |
logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); |
// changed window size from 32KB to 128KB. (2007.10.29 maya) |
| 6786 |
return FALSE; |
if (pvar->use_subsystem) { |
| 6787 |
} |
c = ssh2_channel_new(CHAN_SES_WINDOW_DEFAULT, CHAN_SES_PACKET_DEFAULT, TYPE_SUBSYSTEM_GEN, -1); |
| 6788 |
s = "session"; |
} |
| 6789 |
buffer_put_string(msg, s, strlen(s)); // ctype |
else { |
| 6790 |
buffer_put_int(msg, c->self_id); // self(channel number) |
c = ssh2_channel_new(CHAN_SES_WINDOW_DEFAULT, CHAN_SES_PACKET_DEFAULT, TYPE_SHELL, -1); |
| 6791 |
buffer_put_int(msg, c->local_window); // local_window |
} |
| 6792 |
buffer_put_int(msg, c->local_maxpacket); // local_maxpacket |
|
| 6793 |
len = buffer_len(msg); |
if (c == NULL) { |
| 6794 |
outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_OPEN, len); |
UTIL_get_lang_msg("MSG_SSH_NO_FREE_CHANNEL", pvar, |
| 6795 |
memcpy(outmsg, buffer_ptr (msg), len); |
"Could not open new channel. TTSSH is already opening too many channels."); |
| 6796 |
finish_send_packet(pvar); |
notify_fatal_error(pvar, pvar->ts->UIMsg, TRUE); |
| 6797 |
buffer_free(msg); |
return FALSE; |
| 6798 |
|
} |
| 6799 |
|
// シェルのIDを取っておく |
| 6800 |
|
pvar->shell_id = c->self_id; |
| 6801 |
|
|
| 6802 |
logputs(LOG_LEVEL_VERBOSE, "SSH2_MSG_CHANNEL_OPEN was sent at handle_SSH2_userauth_success()."); |
// シェルオープン |
| 6803 |
|
msg = buffer_init(); |
| 6804 |
|
if (msg == NULL) { |
| 6805 |
|
// TODO: error check |
| 6806 |
|
logputs(LOG_LEVEL_ERROR, __FUNCTION__ ": buffer_init returns NULL."); |
| 6807 |
|
return FALSE; |
| 6808 |
|
} |
| 6809 |
|
s = "session"; |
| 6810 |
|
buffer_put_string(msg, s, strlen(s)); // ctype |
| 6811 |
|
buffer_put_int(msg, c->self_id); // self(channel number) |
| 6812 |
|
buffer_put_int(msg, c->local_window); // local_window |
| 6813 |
|
buffer_put_int(msg, c->local_maxpacket); // local_maxpacket |
| 6814 |
|
len = buffer_len(msg); |
| 6815 |
|
outmsg = begin_send_packet(pvar, SSH2_MSG_CHANNEL_OPEN, len); |
| 6816 |
|
memcpy(outmsg, buffer_ptr (msg), len); |
| 6817 |
|
finish_send_packet(pvar); |
| 6818 |
|
buffer_free(msg); |
| 6819 |
|
|
| 6820 |
|
logputs(LOG_LEVEL_VERBOSE, "SSH2_MSG_CHANNEL_OPEN was sent at handle_SSH2_userauth_success()."); |
| 6821 |
|
} |
| 6822 |
|
|
| 6823 |
// ハートビート・スレッドの開始 (2004.12.11 yutaka) |
// ハートビート・スレッドの開始 (2004.12.11 yutaka) |
| 6824 |
start_ssh_heartbeat_thread(pvar); |
start_ssh_heartbeat_thread(pvar); |