SSH2: timeout after 5s for channel closures

This commit is contained in:
terrafrost 2020-05-29 08:10:03 -05:00
parent ef9785d9c5
commit 9651d075e3

View File

@ -3911,7 +3911,7 @@ class Net_SSH2
$this->channel_buffers[$channel][] = $data; $this->channel_buffers[$channel][] = $data;
break; break;
case NET_SSH2_MSG_CHANNEL_CLOSE: case NET_SSH2_MSG_CHANNEL_CLOSE:
$this->curTimeout = 0; $this->curTimeout = 5;
if ($this->bitmap & NET_SSH2_MASK_SHELL) { if ($this->bitmap & NET_SSH2_MASK_SHELL) {
$this->bitmap&= ~NET_SSH2_MASK_SHELL; $this->bitmap&= ~NET_SSH2_MASK_SHELL;
@ -4140,11 +4140,15 @@ class Net_SSH2
$this->channel_status[$client_channel] = NET_SSH2_MSG_CHANNEL_CLOSE; $this->channel_status[$client_channel] = NET_SSH2_MSG_CHANNEL_CLOSE;
$this->curTimeout = 0; $this->curTimeout = 5;
while (!is_bool($this->_get_channel_packet($client_channel))) { while (!is_bool($this->_get_channel_packet($client_channel))) {
} }
if ($this->is_timeout) {
$this->disconnect();
}
if ($want_reply) { if ($want_reply) {
$this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$client_channel])); $this->_send_binary_packet(pack('CN', NET_SSH2_MSG_CHANNEL_CLOSE, $this->server_channels[$client_channel]));
} }