diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2008-09-05 16:13:20 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2008-09-05 16:13:20 +0000 | 
| commit | 18110b519c56a464bca4258332279c580f07a52f (patch) | |
| tree | 0818c63153e939254958ebeacce23ac713bd9bba /src | |
| parent | 4c9768565ec3a9baf26ac8a547bca6e42cc64fa5 (diff) | |
- Martin Drasar provided the CURLOPT_POSTREDIR patch. It renames
  CURLOPT_POST301 (but adds a define for backwards compatibility for you who
  don't define CURL_NO_OLDIES). This option allows you to now also change the
  libcurl behavior for a HTTP response 302 after a POST to not use GET in the
  subsequent request (when CURLOPT_FOLLOWLOCATION is enabled). I edited the
  patch somewhat before commit. The curl tool got a matching --post302
  option. Test case 1076 was added to verify this.
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.c | 29 | 
1 files changed, 19 insertions, 10 deletions
| diff --git a/src/main.c b/src/main.c index e9f9d30a2..81f1dfd9c 100644 --- a/src/main.c +++ b/src/main.c @@ -557,6 +557,7 @@ struct Configurable {    char *libcurl; /* output libcurl code to this file name */    bool raw;    bool post301; +  bool post302;    bool nokeepalive; /* for keepalive needs */    long alivetime; @@ -780,6 +781,7 @@ static void help(void)      " -o/--output <file> Write output to <file> instead of stdout",      "    --pass  <pass>  Pass phrase for the private key (SSL/SSH)",      "    --post301       Do not switch to GET after following a 301 redirect (H)", +    "    --post302       Do not switch to GET after following a 302 redirect (H)",      " -#/--progress-bar  Display transfer progress as a progress bar",      " -x/--proxy <host[:port]> Use HTTP proxy on given port",      "    --proxy-anyauth Pick \"any\" proxy authentication method (H)", @@ -1669,6 +1671,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */      {"$1", "keepalive",   FALSE}, /* listed as --no-keepalive in the help */      {"$2", "socks5-hostname", TRUE},      {"$3", "keepalive-time",  TRUE}, +    {"$4", "post302",    FALSE},      {"0", "http1.0",     FALSE},      {"1", "tlsv1",       FALSE}, @@ -2177,6 +2180,9 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */          if(str2num(&config->alivetime, nextarg))            return PARAM_BAD_NUMERIC;          break; +      case '4': /* --post302 */ +        config->post302 = toggle; +        break;        }        break;      case '#': /* --progress-bar */ @@ -2946,19 +2952,19 @@ static const char *unslashquote(const char *line, char *param)        /* default is to output the letter after the backslash */        switch(out = *line) {        case '\0': -	continue; /* this'll break out of the loop */ +        continue; /* this'll break out of the loop */        case 't': -	out='\t'; -	break; +        out='\t'; +        break;        case 'n': -	out='\n'; -	break; +        out='\n'; +        break;        case 'r': -	out='\r'; -	break; +        out='\r'; +        break;        case 'v': -	out='\v'; -	break; +        out='\v'; +        break;        }        *param++=out;        line++; @@ -4777,12 +4783,15 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])          }          /* curl 7.17.1 */ -        my_setopt(curl, CURLOPT_POST301, config->post301);          if (!config->nokeepalive) {            my_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockoptcallback);            my_setopt(curl, CURLOPT_SOCKOPTDATA, config);          } +        /* curl 7.19.1 (the 301 version existed in 7.18.2) */ +        my_setopt(curl, CURLOPT_POSTREDIR, config->post301 | +                  (config->post302 ? CURL_REDIR_POST_302 : FALSE)); +          retry_numretries = config->req_retry;          retrystart = cutil_tvnow(); | 
