mirror of
https://github.com/curl/curl.git
synced 2026-07-25 11:17:56 +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
|
|
@ -247,6 +247,7 @@ struct OperationConfig {
|
|||
from user callbacks */
|
||||
curl_error synthetic_error; /* if non-zero, it overrides any libcurl
|
||||
error */
|
||||
bool ssh_compression; /* enable/disable SSH compression */
|
||||
struct GlobalConfig *global;
|
||||
struct OperationConfig *prev;
|
||||
struct OperationConfig *next; /* Always last in the struct */
|
||||
|
|
|
|||
|
|
@ -188,6 +188,7 @@ static const struct LongShort aliases[]= {
|
|||
{"$W", "abstract-unix-socket", ARG_STRING},
|
||||
{"$X", "tls-max", ARG_STRING},
|
||||
{"$Y", "suppress-connect-headers", ARG_BOOL},
|
||||
{"$Z", "compressed-ssh", ARG_BOOL},
|
||||
{"0", "http1.0", ARG_NONE},
|
||||
{"01", "http1.1", ARG_NONE},
|
||||
{"02", "http2", ARG_NONE},
|
||||
|
|
@ -1076,6 +1077,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
case 'Y': /* --suppress-connect-headers */
|
||||
config->suppress_connect_headers = toggle;
|
||||
break;
|
||||
case 'Z': /* --compressed-ssh */
|
||||
config->ssh_compression = toggle;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case '#': /* --progress-bar */
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ static const struct helptxt helptext[] = {
|
|||
"SSL ciphers to use"},
|
||||
{" --compressed",
|
||||
"Request compressed response"},
|
||||
{" --compressed-ssh",
|
||||
"Enable SSH compression"},
|
||||
{"-K, --config <file>",
|
||||
"Read config from a file"},
|
||||
{" --connect-timeout <seconds>",
|
||||
|
|
|
|||
|
|
@ -1091,6 +1091,10 @@ static CURLcode operate_do(struct GlobalConfig *global,
|
|||
to fail if we are not talking to who we think we should */
|
||||
my_setopt_str(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
|
||||
config->hostpubmd5);
|
||||
|
||||
/* new in libcurl 7.56.0 */
|
||||
if(config->ssh_compression)
|
||||
my_setopt(curl, CURLOPT_SSH_COMPRESSION, 1L);
|
||||
}
|
||||
|
||||
if(config->cacert)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue