Tera Termの個人的な作業用リポジトリ
Revisão | 3993a56ed4cb24287e1a194f90cdb5d7eda11e17 (tree) |
---|---|
Hora | 2023-10-05 08:35:39 |
Autor | nmaya <nmaya@user...> |
Commiter | nmaya |
SSH2 の Rekey 中に発生した SSH_MSG_CHANNEL_DATA の送信を破棄せず、バッファに入れるようにした
issue: https://github.com/TeraTermProject/osdn-download/issues/18
git-svn-id: svn+ssh://svn.osdn.net/svnroot/ttssh2/trunk@10957 f5f01b69-1e22-0410-acbf-894ab4bd6246
@@ -3590,14 +3590,9 @@ void SSH2_send_channel_data(PTInstVar pvar, Channel_t *c, unsigned char *buf, un | ||
3590 | 3590 | unsigned char *outmsg; |
3591 | 3591 | unsigned int len; |
3592 | 3592 | |
3593 | - // SSH2鍵交換中の場合、パケットを捨てる。(2005.6.19 yutaka) | |
3593 | + // SSH2鍵交換中の場合は、パケットを送れないのでいったん保存しておく | |
3594 | 3594 | if (pvar->kex_status & KEX_FLAG_REKEYING) { |
3595 | - // TODO: 理想としてはパケット破棄ではなく、パケット読み取り遅延にしたいところだが、 | |
3596 | - // 将来直すことにする。 | |
3597 | - logprintf(LOG_LEVEL_INFO, "%s: now rekeying. data is not sent.", __FUNCTION__); | |
3598 | - | |
3599 | - c = NULL; | |
3600 | - | |
3595 | + ssh2_channel_add_bufchain(pvar, c, buf, buflen); | |
3601 | 3596 | return; |
3602 | 3597 | } |
3603 | 3598 |
@@ -6210,7 +6205,18 @@ static BOOL handle_SSH2_newkeys(PTInstVar pvar) | ||
6210 | 6205 | // SSH2_MSG_NEWKEYS を既に送っていたらKEXは完了。次の処理に移る。 |
6211 | 6206 | if (pvar->kex_status & KEX_FLAG_NEWKEYS_SENT) { |
6212 | 6207 | if (pvar->kex_status & KEX_FLAG_REKEYING) { |
6208 | + int i; | |
6209 | + Channel_t *c; | |
6210 | + | |
6213 | 6211 | do_SSH2_dispatch_setup_for_transfer(pvar); |
6212 | + | |
6213 | + // 送らずバッファに保存しておいたデータを送る | |
6214 | + for (i = 0 ; i < CHANNEL_MAX ; i++) { | |
6215 | + c = &channels[i]; | |
6216 | + if (c->used) { | |
6217 | + ssh2_channel_retry_send_bufchain(pvar, c); | |
6218 | + } | |
6219 | + } | |
6214 | 6220 | } |
6215 | 6221 | else { |
6216 | 6222 | // 初回の SSH2_MSG_NEWKEYS の送受信が完了し、以降の通信は暗号化された状態になる |
@@ -9286,7 +9292,7 @@ static BOOL handle_SSH2_window_adjust(PTInstVar pvar) | ||
9286 | 9292 | // window sizeの調整 |
9287 | 9293 | c->remote_window += adjust; |
9288 | 9294 | |
9289 | - // 送り残し | |
9295 | + // 送らずバッファに保存しておいたデータを送る | |
9290 | 9296 | ssh2_channel_retry_send_bufchain(pvar, c); |
9291 | 9297 | |
9292 | 9298 | return TRUE; |