svnno****@sourc*****
svnno****@sourc*****
2011年 5月 30日 (月) 22:04:11 JST
Revision: 4476 http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4476 Author: maya Date: 2011-05-30 22:04:11 +0900 (Mon, 30 May 2011) Log Message: ----------- SSH2ã®å ´åã«ã¯ãã¼ã転é以å¤ã®ãã£ãã«ã§FWD_free_channelãå¼ãã§ã¯ãããªãã®ã«å¼ãã§ããã®ãä¿®æ£ http://sourceforge.jp/ticket/browse.php?group_id=1412&tid=25169 ãã ããå¥ã®åé¡ãæ®ã£ã¦ããæ¨¡æ§ Modified Paths: -------------- trunk/ttssh2/ttxssh/fwd.c trunk/ttssh2/ttxssh/ssh.c -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/fwd.c =================================================================== --- trunk/ttssh2/ttxssh/fwd.c 2011-05-27 14:44:18 UTC (rev 4475) +++ trunk/ttssh2/ttxssh/fwd.c 2011-05-30 13:04:11 UTC (rev 4476) @@ -299,13 +299,13 @@ { FWDChannel FAR *channel = &pvar->fwd_state.channels[local_channel_num]; - if (channel->type == TYPE_AGENT) { + if (channel->type == TYPE_AGENT) { // TYPE_AGENT ű±ÉéÌÍ SSH1 ÌÝ buffer_free(channel->agent_msg); // channel_close Æ TTSSH I¹É2ñÄÎêéÌÅAñd free h~Ì½ß channel->agent_msg = NULL; channel->status = 0; } - else { + else { // TYPE_PORTFWD UTIL_destroy_sock_write_buf(&channel->writebuf); if (channel->filter != NULL) { channel->filter(channel->filter_closure, 0, NULL, NULL); Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2011-05-27 14:44:18 UTC (rev 4475) +++ trunk/ttssh2/ttxssh/ssh.c 2011-05-30 13:04:11 UTC (rev 4476) @@ -7212,7 +7212,9 @@ free(cstring); // ]`làÉ é\PbgÌðúRêðC³ (2007.7.26 maya) - FWD_free_channel(pvar, c->local_num); + if (c->type == TYPE_PORTFWD) { + FWD_free_channel(pvar, c->local_num); + } // `lÌðúRêðC³ (2007.5.1 maya) ssh2_channel_delete(c); @@ -8165,7 +8167,7 @@ } else if (strcmp(ctype, "auth-****@opens*****") == 0) { // agent forwarding if (pvar->agentfwd_enable && FWD_agent_forward_confirm(pvar)) { - c = ssh2_channel_new(CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, TYPE_AGENT, chan_num); + c = ssh2_channel_new(CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, TYPE_AGENT, -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."); @@ -8275,9 +8277,12 @@ } else if (c->type == TYPE_SCP) { ssh2_channel_delete(c); - } else { + } else if (c->type == TYPE_AGENT) { ssh2_channel_delete(c); + } else { // TYPE_PORTFWD + ssh2_channel_delete(c); + } return TRUE; @@ -8296,9 +8301,8 @@ char *emsg = "exit-status"; int estat = 0; Channel_t *c; + char log[128]; - notify_verbose_message(pvar, "SSH2_MSG_CHANNEL_REQUEST was received.", LOG_LEVEL_VERBOSE); - // 6byteiTCY{pfBO{^Cvjðæ袽È~ÌyC[h data = pvar->ssh_state.payload; // pPbgTCY - (pfBOTCY+1)G^ÌpPbgTCY @@ -8323,6 +8327,9 @@ reply = data[0]; data += 1; + _snprintf_s(log, sizeof(log), _TRUNCATE, "SSH2_MSG_CHANNEL_REQUEST was received. local:%d remote:%d %s reply:%d", c->self_id, c->remote_id, str, reply); + notify_verbose_message(pvar, log, LOG_LEVEL_VERBOSE); + // I¹R[hªÜÜêÄ¢éÈçÎ if (memcmp(str, emsg, strlen(emsg)) == 0) { success = 1;