diff --git a/phpseclib/Net/SSH2.php b/phpseclib/Net/SSH2.php index bc934099..30821b6c 100644 --- a/phpseclib/Net/SSH2.php +++ b/phpseclib/Net/SSH2.php @@ -3229,9 +3229,6 @@ class SSH2 // on windows this returns a "Warning: Invalid CRT parameters detected" error if (!stream_select($read, $write, $except, $sec, $usec)) { $this->is_timeout = true; - if ($client_channel == self::CHANNEL_EXEC && !$this->request_pty) { - $this->close_channel($client_channel); - } return true; } $elapsed = microtime(true) - $start; @@ -3692,6 +3689,9 @@ class SSH2 $this->binary_packet_buffer = false; } else { $response = $this->get_binary_packet(true); + if ($response === true && $this->is_timeout && $client_channel == self::CHANNEL_EXEC && !$this->request_pty) { + $this->close_channel($client_channel); + } if ($response === false) { $this->disconnect_helper(NET_SSH2_DISCONNECT_CONNECTION_LOST); throw new ConnectionClosedException('Connection closed by server');