libssh2: limit time a disconnect can take to 1 second

Closes #7271
This commit is contained in:
Daniel Stenberg 2021-06-17 10:25:53 +02:00
parent 720b4a1a43
commit fa34353d07
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
1 changed files with 7 additions and 0 deletions

View File

@ -2938,6 +2938,7 @@ static CURLcode ssh_block_statemach(struct Curl_easy *data,
{
struct ssh_conn *sshc = &conn->proto.sshc;
CURLcode result = CURLE_OK;
struct curltime dis = Curl_now();
while((sshc->state != SSH_STOP) && !result) {
bool block;
@ -2962,6 +2963,12 @@ static CURLcode ssh_block_statemach(struct Curl_easy *data,
return CURLE_OPERATION_TIMEDOUT;
}
}
else if(Curl_timediff(now, dis) > 1000) {
/* disconnect timeout */
failf(data, "Disconnect timed out");
result = CURLE_OK;
break;
}
if(block) {
int dir = libssh2_session_block_directions(sshc->ssh_session);