Commit 7917bfb1 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

--location-trusted added, which does a normal location plus the new

CURLOPT_UNRESTRICTED_AUTH option set TRUE.

Patch by Guillaume Cottenceau.
parent 25f611ca
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -125,6 +125,9 @@ typedef enum {

#define CONF_NETRC_OPT (1<<29)  /* read user+password from either
                                 * .netrc or URL*/
#define CONF_UNRESTRICTED_AUTH (1<<30)
/* Send authentication (user+password) when following
 * locations, even when hostname changed */

#ifndef HAVE_STRDUP
/* Ultrix doesn't have strdup(), so make a quick clone: */
@@ -380,6 +383,8 @@ static void help(void)
       " -l/--list-only     List only names of an FTP directory (F)\n"
       "    --limit-rate <rate> Limit how fast transfers to allow");
  puts(" -L/--location      Follow Location: hints (H)\n"
       "    --location-trusted Same, and continue to send authentication when \n"
       "                    following locations, even when hostname changed\n"
       " -m/--max-time <seconds> Maximum time allowed for the transfer\n"
       " -M/--manual        Display huge help text\n"
       " -n/--netrc         Must read .netrc for user name and password\n"
@@ -1064,6 +1069,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
    {"K", "config",      TRUE},
    {"l", "list-only",   FALSE},
    {"L", "location",    FALSE},
    {"Lt", "location-trusted", FALSE},
    {"m", "max-time",    TRUE},
    {"M", "manual",      FALSE},
    {"n", "netrc",       FALSE},
@@ -1521,6 +1527,13 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
      break;
    case 'L':
      config->conf ^= CONF_FOLLOWLOCATION; /* Follow Location: HTTP headers */
      switch (subletter) {
      case 't':
        /* Continue to send authentication (user+password) when following
         * locations, even when hostname changed */
        config->conf ^= CONF_UNRESTRICTED_AUTH;
        break;
      }
      break;
    case 'm':
      /* specified max time */
@@ -2809,6 +2822,8 @@ operate(struct Configurable *config, int argc, char *argv[])

      curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION,
                       config->conf&CONF_FOLLOWLOCATION);
      curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH,
                       config->conf&CONF_UNRESTRICTED_AUTH);
      curl_easy_setopt(curl, CURLOPT_TRANSFERTEXT, config->conf&CONF_GETTEXT);
      curl_easy_setopt(curl, CURLOPT_MUTE, config->conf&CONF_MUTE);
      curl_easy_setopt(curl, CURLOPT_USERPWD, config->userpwd);