ssh: Add support for libssh2 read timeout
Hook the new (1.11.0 or newer) libssh2 support for setting a read timeout into the SERVER_RESPONSE_TIMEOUT option. With this done, clients can use the standard curl response timeout setting to also control the time that libssh2 will wait for packets from a slow server. This is necessary to enable use of very slow SFTP servers. Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk> Closes #10965
This commit is contained in:
parent
f157610d30
commit
e915b6904c
@ -45,7 +45,7 @@ This option was formerly known as \fBCURLOPT_FTP_RESPONSE_TIMEOUT\fP.
|
|||||||
.SH DEFAULT
|
.SH DEFAULT
|
||||||
None
|
None
|
||||||
.SH PROTOCOLS
|
.SH PROTOCOLS
|
||||||
FTP, IMAP, POP3 and SMTP
|
FTP, IMAP, POP3, SMTP, and SSH
|
||||||
.SH EXAMPLE
|
.SH EXAMPLE
|
||||||
.nf
|
.nf
|
||||||
CURL *curl = curl_easy_init();
|
CURL *curl = curl_easy_init();
|
||||||
@ -60,6 +60,9 @@ if(curl) {
|
|||||||
.fi
|
.fi
|
||||||
.SH AVAILABILITY
|
.SH AVAILABILITY
|
||||||
Added in 7.10.8. Used under this name since 7.20.0
|
Added in 7.10.8. Used under this name since 7.20.0
|
||||||
|
|
||||||
|
Support for SSH is predicated on a new enough (1.11.0) version of libssh2
|
||||||
|
being available when compiling libcurl.
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Returns CURLE_OK if supported, and CURLE_UNKNOWN_OPTION if not. Returns
|
Returns CURLE_OK if supported, and CURLE_UNKNOWN_OPTION if not. Returns
|
||||||
CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value or a value that when
|
CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value or a value that when
|
||||||
|
|||||||
@ -3280,6 +3280,16 @@ static CURLcode ssh_connect(struct Curl_easy *data, bool *done)
|
|||||||
return CURLE_FAILED_INIT;
|
return CURLE_FAILED_INIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBSSH2_VERSION
|
||||||
|
/* Set the packet read timeout if the libssh2 version supports it */
|
||||||
|
#if LIBSSH2_VERSION_NUM >= 0x010B00
|
||||||
|
if(data->set.server_response_timeout > 0) {
|
||||||
|
libssh2_session_set_read_timeout(sshc->ssh_session,
|
||||||
|
data->set.server_response_timeout / 1000);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CURL_DISABLE_PROXY
|
#ifndef CURL_DISABLE_PROXY
|
||||||
if(conn->http_proxy.proxytype == CURLPROXY_HTTPS) {
|
if(conn->http_proxy.proxytype == CURLPROXY_HTTPS) {
|
||||||
/*
|
/*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user