curl: add --proxy-header
authorMaciej Puzio <mx34567@gmail.com>
Tue, 4 Feb 2014 22:48:16 +0000 (23:48 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 4 Apr 2014 15:03:43 +0000 (17:03 +0200)
src/tool_cfgable.c
src/tool_cfgable.h
src/tool_getparam.c
src/tool_operate.c

index 1e67f54..2fdae07 100644 (file)
@@ -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);
index 4519744..4ef2690 100644 (file)
@@ -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;
index a0be434..6d68c5b 100644 (file)
@@ -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;
index 1b75394..99ec59a 100644 (file)
@@ -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);