diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index 1e67f54a402fbf65341c26dd89dd97c01f3d99e4..2fdae073fd6f2cb07afe5b3fc1940df236ad6af7 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 451974468ce2a301e46e94981c4d6978b0979c7c..4ef2690266d4793aee3f1d291259f50c02e342eb 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 a0be434ca4721a49efa63406860e0879c68778c5..6d68c5b40f5469b9027f552eadb41752ac3ce076 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 1b7539459c1e3f09b238512249cb583a135c535c..99ec59abe41fbe4a6a840104369d4b66c6d0d706 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);