diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2011-08-12 14:48:32 +0200 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2011-08-12 23:06:12 +0200 | 
| commit | 5538904d775161d1a0fa3ebb77bce6b252dc47ee (patch) | |
| tree | adff7c0345ebb1fa4fc3e4e3e9764502df6a9e18 | |
| parent | a472ceb174833de950b48481384d73c4e8cc6509 (diff) | |
added --delegation
Using this option with an argument being set to one of
none/policy/always instructs libcurl how to deal with GSS
credentials. Or rather how it tells the server that delegation is fine
or not.
| -rw-r--r-- | src/main.c | 29 | 
1 files changed, 26 insertions, 3 deletions
| diff --git a/src/main.c b/src/main.c index eae45dea0..b24c8566f 100644 --- a/src/main.c +++ b/src/main.c @@ -655,6 +655,7 @@ struct Configurable {                               basically each given URL to transfer */    struct OutStruct *outs;    bool xattr; /* store metadata in extended attributes */ +  long gssapi_delegation;  };  #define WARN_PREFIX "Warning: " @@ -812,6 +813,7 @@ static void help(void)      "     --data-ascii DATA  HTTP POST ASCII data (H)",      "     --data-binary DATA  HTTP POST binary data (H)",      "     --data-urlencode DATA  HTTP POST data url encoded (H)", +    "     --delegation STRING GSS-API delegation permission",      "     --digest        Use HTTP Digest Authentication (H)",      "     --disable-eprt  Inhibit using EPRT or LPRT (F)",      "     --disable-epsv  Inhibit using EPSV (F)", @@ -1818,6 +1820,18 @@ static int sockoptcallback(void *clientp, curl_socket_t curlfd,    return 0;  } +static long delegation(struct Configurable *config, +                       char *str) +{ +  if(curlx_raw_equal("none", str)) +    return CURLGSSAPI_DELEGATION_NONE; +  if(curlx_raw_equal("policy", str)) +    return CURLGSSAPI_DELEGATION_POLICY_FLAG; +  if(curlx_raw_equal("always", str)) +    return CURLGSSAPI_DELEGATION_FLAG; +  warnf(config, "unrecognized delegation method '%s', using none\n", str); +  return CURLGSSAPI_DELEGATION_NONE; +}  static ParameterError getparameter(char *flag, /* f or -long-flag */                                     char *nextarg, /* NULL if unset */ @@ -1938,6 +1952,7 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */      {"$D", "proto",      TRUE},      {"$E", "proto-redir", TRUE},      {"$F", "resolve",    TRUE}, +    {"$G", "delegation", TRUE},      {"0", "http1.0",     FALSE},      {"1", "tlsv1",       FALSE},      {"2", "sslv2",       FALSE}, @@ -2523,6 +2538,9 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */          if(err)            return err;          break; +      case 'G': /* --delegation LEVEL */ +        config->gssapi_delegation = delegation(config, nextarg); +        break;        }        break;      case '#': /* --progress-bar */ @@ -5597,9 +5615,14 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])            /* new in 7.21.3 */            my_setopt(curl, CURLOPT_RESOLVE, config->resolve); -        /* TODO: new in ### */ -        curl_easy_setopt(curl, CURLOPT_TLSAUTH_USERNAME, config->tls_username); -        curl_easy_setopt(curl, CURLOPT_TLSAUTH_PASSWORD, config->tls_password); +        /* new in 7.21.4 */ +        my_setopt_str(curl, CURLOPT_TLSAUTH_USERNAME, config->tls_username); +        my_setopt_str(curl, CURLOPT_TLSAUTH_PASSWORD, config->tls_password); + +        /* new in 7.22.0 */ +        if(config->gssapi_delegation) +          my_setopt_str(curl, CURLOPT_GSSAPI_DELEGATION, +                        config->gssapi_delegation);          retry_numretries = config->req_retry; | 
