diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index 1e67f54a4..2fdae073f 100644 --- a/src/tool_cfgable.c +++ b/src/tool_cfgable.c @@ -120,6 +120,7 @@ static void free_config_fields(struct OperationConfig *config) curl_slist_free_all(config->prequote); curl_slist_free_all(config->headers); + curl_slist_free_all(config->proxyheaders); if(config->httppost) { curl_formfree(config->httppost); diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index 451974468..4ef269026 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -143,6 +143,7 @@ struct OperationConfig { curl_TimeCond timecond; time_t condtime; struct curl_slist *headers; + struct curl_slist *proxyheaders; struct curl_httppost *httppost; struct curl_httppost *last_post; struct curl_slist *telnet_options; diff --git a/src/tool_getparam.c b/src/tool_getparam.c index a0be434ca..6d68c5b40 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -222,6 +222,7 @@ static const struct LongShort aliases[]= { {"G", "get", FALSE}, {"h", "help", FALSE}, {"H", "header", TRUE}, + {"Hp", "proxy-header", TRUE}, {"i", "include", FALSE}, {"I", "head", FALSE}, {"j", "junk-session-cookies", FALSE}, @@ -1404,7 +1405,10 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ break; case 'H': /* A custom header to append to a list */ - err = add2list(&config->headers, nextarg); + if(subletter == 'p') /* --proxy-header */ + err = add2list(&config->proxyheaders, nextarg); + else + err = add2list(&config->headers, nextarg); if(err) return err; break; diff --git a/src/tool_operate.c b/src/tool_operate.c index 1b7539459..99ec59abe 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -947,6 +947,12 @@ static CURLcode operate_do(struct GlobalConfig *global, my_setopt_str(curl, CURLOPT_USERAGENT, config->useragent); my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers); + /* new in libcurl 7.36.0 */ + if(config->proxyheaders) { + my_setopt_slist(curl, CURLOPT_PROXYHEADER, config->proxyheaders); + my_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_SEPARATE); + } + /* new in libcurl 7.5 */ my_setopt(curl, CURLOPT_MAXREDIRS, config->maxredirs);