SSH2: set stream timeout before calling stream_get_contents

This commit is contained in:
terrafrost 2024-02-07 20:09:26 -06:00
parent 498e67a0c8
commit c948a9a407
1 changed files with 7 additions and 1 deletions

View File

@ -1108,6 +1108,8 @@ class SSH2
* Default Constructor.
*
* $host can either be a string, representing the host, or a stream resource.
* If $host is a stream resource then $port doesn't do anything, altho $timeout
* still will be used
*
* @param mixed $host
* @param int $port
@ -1198,6 +1200,8 @@ class SSH2
31 => 'NET_SSH2_MSG_KEX_ECDH_REPLY')
);
$this->timeout = $timeout;
if (is_resource($host)) {
$this->fsock = $host;
return;
@ -1206,7 +1210,6 @@ class SSH2
if (is_string($host)) {
$this->host = $host;
$this->port = $port;
$this->timeout = $timeout;
}
}
@ -3646,6 +3649,9 @@ class SSH2
}
$start = microtime(true);
$sec = (int) floor($this->curTimeout);
$usec = (int) (1000000 * ($this->curTimeout - $sec));
stream_set_timeout($this->fsock, $sec, $usec);
$raw = stream_get_contents($this->fsock, $this->decrypt_block_size);
if (!strlen($raw)) {