From 6baeb6df35d24740c55239f24b5fc4ce86f375a5 Mon Sep 17 00:00:00 2001 From: Lawrence Matthews Date: Thu, 1 Dec 2016 04:05:04 -0800 Subject: CURLOPT_HAPROXYPROTOCOL: support the HAProxy PROXY protocol Add --haproxy-protocol for the command line tool Closes #2162 --- src/tool_cfgable.h | 1 + src/tool_getparam.c | 4 ++++ src/tool_help.c | 2 ++ src/tool_operate.c | 4 ++++ 4 files changed, 11 insertions(+) (limited to 'src') 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
", "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 */ -- cgit v1.2.3