diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/http_digest.c | 9 | ||||
| -rw-r--r-- | lib/urldata.h | 4 | 
2 files changed, 12 insertions, 1 deletions
| diff --git a/lib/http_digest.c b/lib/http_digest.c index a75ca9d59..f52c8dd22 100644 --- a/lib/http_digest.c +++ b/lib/http_digest.c @@ -79,6 +79,7 @@ CURLcode Curl_output_digest(struct connectdata *conn,    char *tmp;    char *response;    size_t len; +  bool have_chlg;    /* Point to the address of the pointer that holds the string to send to the       server, which is for a plain host or for a HTTP proxy */ @@ -116,7 +117,13 @@ CURLcode Curl_output_digest(struct connectdata *conn,    if(!passwdp)      passwdp=""; -  if(!d->nonce) { +#if defined(USE_WINDOWS_SSPI) +  have_chlg = d->input_token ? TRUE : FALSE; +#else +  have_chlg = d->nonce ? TRUE : FALSE; +#endif + +  if(!have_chlg) {      authp->done = FALSE;      return CURLE_OK;    } diff --git a/lib/urldata.h b/lib/urldata.h index 62a2b8048..f0f903844 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -391,6 +391,9 @@ struct curl_ssl_session {  /* Struct used for Digest challenge-response authentication */  struct digestdata { +#if defined(USE_WINDOWS_SSPI) +  BYTE *input_token; +#else    char *nonce;    char *cnonce;    char *realm; @@ -400,6 +403,7 @@ struct digestdata {    char *qop;    char *algorithm;    int nc; /* nounce count */ +#endif  };  typedef enum { | 
