diff options
author | Lawrence Matthews <lmatthew@yelp.com> | 2016-12-01 04:05:04 -0800 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2018-03-17 11:50:06 +0100 |
commit | 6baeb6df35d24740c55239f24b5fc4ce86f375a5 (patch) | |
tree | 6a8ec40408e6827f40b750985517e575c89545fc /src | |
parent | 9572831b0470378c2f45f2891feb91dea19c16d7 (diff) | |
download | curl-6baeb6df35d24740c55239f24b5fc4ce86f375a5.tar.gz |
CURLOPT_HAPROXYPROTOCOL: support the HAProxy PROXY protocol
Add --haproxy-protocol for the command line tool
Closes #2162
Diffstat (limited to 'src')
-rw-r--r-- | src/tool_cfgable.h | 1 | ||||
-rw-r--r-- | src/tool_getparam.c | 4 | ||||
-rw-r--r-- | src/tool_help.c | 2 | ||||
-rw-r--r-- | src/tool_operate.c | 4 |
4 files changed, 11 insertions, 0 deletions
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index 743ce725d..9abaa9d39 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -252,6 +252,7 @@ struct OperationConfig { bool ssh_compression; /* enable/disable SSH compression */ long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds. 0 is valid. default: CURL_HET_DEFAULT. */ + bool haproxy_protocol; /* whether to send HAProxy PROXY protocol */ struct GlobalConfig *global; struct OperationConfig *prev; struct OperationConfig *next; /* Always last in the struct */ diff --git a/src/tool_getparam.c b/src/tool_getparam.c index 7ce9c28c7..19454c84a 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -112,6 +112,7 @@ static const struct LongShort aliases[]= { {"*x", "krb", ARG_STRING}, {"*x", "krb4", ARG_STRING}, /* 'krb4' is the previous name */ + {"*X", "haproxy-protocol", ARG_BOOL}, {"*y", "max-filesize", ARG_STRING}, {"*z", "disable-eprt", ARG_BOOL}, {"*Z", "eprt", ARG_BOOL}, @@ -779,6 +780,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ else return PARAM_LIBCURL_DOESNT_SUPPORT; break; + case 'X': /* --haproxy-protocol */ + config->haproxy_protocol = toggle; + break; case 'y': /* --max-filesize */ { curl_off_t value; diff --git a/src/tool_help.c b/src/tool_help.c index 9796b7e87..4bd65269a 100644 --- a/src/tool_help.c +++ b/src/tool_help.c @@ -164,6 +164,8 @@ static const struct helptxt helptext[] = { "How long to wait in milliseconds for IPv6 before trying IPv4"}, {"-I, --head", "Show document info only"}, + {" --haproxy-protocol", + "Send HAProxy PROXY protocol header"}, {"-H, --header <header/@file>", "Pass custom header(s) to server"}, {"-h, --help", diff --git a/src/tool_operate.c b/src/tool_operate.c index 15cdc13da..0aad54282 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -1445,6 +1445,10 @@ static CURLcode operate_do(struct GlobalConfig *global, my_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, config->happy_eyeballs_timeout_ms); + /* new in 7.60.0 */ + if(config->haproxy_protocol) + my_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 1L); + /* initialize retry vars for loop below */ retry_sleep_default = (config->retry_delay) ? config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */ |