mirror of
https://github.com/curl/curl.git
synced 2026-07-30 18:28:08 +03:00
ssh: add the ability to enable compression (for SCP/SFTP)
The required low-level logic was already available as part of `libssh2` (via `LIBSSH2_FLAG_COMPRESS` `libssh2_session_flag()`[1] option.) This patch adds the new `libcurl` option `CURLOPT_SSH_COMPRESSION` (boolean) and the new `curl` command-line option `--compressed-ssh` to request this `libssh2` feature. To have compression enabled, it is required that the SSH server supports a (zlib) compatible compression method and that `libssh2` was built with `zlib` support enabled. [1] https://www.libssh2.org/libssh2_session_flag.html Ref: https://github.com/curl/curl/issues/1732 Closes https://github.com/curl/curl/pull/1735
This commit is contained in:
parent
d18941ea17
commit
b7b4dc0d49
17 changed files with 140 additions and 2 deletions
|
|
@ -2942,6 +2942,13 @@ static CURLcode ssh_connect(struct connectdata *conn, bool *done)
|
|||
return CURLE_FAILED_INIT;
|
||||
}
|
||||
|
||||
if(data->set.ssh_compression) {
|
||||
#if LIBSSH2_VERSION_NUM >= 0x010208
|
||||
if(libssh2_session_flag(ssh->ssh_session, LIBSSH2_FLAG_COMPRESS, 1) < 0)
|
||||
#endif
|
||||
infof(data, "Failed to enable compression for ssh session\n");
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBSSH2_KNOWNHOST_API
|
||||
if(data->set.str[STRING_SSH_KNOWNHOSTS]) {
|
||||
int rc;
|
||||
|
|
|
|||
|
|
@ -2936,6 +2936,9 @@ CURLcode Curl_setopt(struct Curl_easy *data, CURLoption option,
|
|||
case CURLOPT_SUPPRESS_CONNECT_HEADERS:
|
||||
data->set.suppress_connect_headers = (0 != va_arg(param, long))?TRUE:FALSE;
|
||||
break;
|
||||
case CURLOPT_SSH_COMPRESSION:
|
||||
data->set.ssh_compression = (0 != va_arg(param, long))?TRUE:FALSE;
|
||||
break;
|
||||
default:
|
||||
/* unknown tag and its companion, just ignore: */
|
||||
result = CURLE_UNKNOWN_OPTION;
|
||||
|
|
|
|||
|
|
@ -1742,6 +1742,7 @@ struct UserDefined {
|
|||
|
||||
curl_sshkeycallback ssh_keyfunc; /* key matching callback */
|
||||
void *ssh_keyfunc_userp; /* custom pointer to callback */
|
||||
bool ssh_compression; /* enable SSH compression */
|
||||
|
||||
/* Here follows boolean settings that define how to behave during
|
||||
this session. They are STATIC, set by libcurl users or at least initially
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue