diff options
-rw-r--r-- | lib/transfer.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/transfer.c b/lib/transfer.c index 7d060c689..fce597884 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -737,6 +737,8 @@ CURLcode Curl_readwrite(struct connectdata *conn, conn->newurl = strdup(data->change.url); } #endif +#ifdef USE_SSLEAY + /* NTLM support requires the SSL crypto libs */ else if(Curl_compareheader(k->p, "WWW-Authenticate:", "NTLM") && (401 == k->httpcode) && @@ -748,6 +750,7 @@ CURLcode Curl_readwrite(struct connectdata *conn, conn->newurl = strdup(data->change.url); /* clone string */ } +#endif else if(checkprefix("WWW-Authenticate:", k->p) && (401 == k->httpcode) && data->set.httpdigest /* Digest authentication is @@ -789,6 +792,8 @@ CURLcode Curl_readwrite(struct connectdata *conn, *ptr = '\0'; /* zero terminate */ conn->newurl = strdup(start); /* clone string */ *ptr = backup; /* restore ending letter */ + + k->returnbeforebody = TRUE; /* don't wait for contents */ } } #if 0 /* for consideration */ @@ -846,7 +851,7 @@ CURLcode Curl_readwrite(struct connectdata *conn, write a piece of the body */ if(conn->protocol&PROT_HTTP) { /* HTTP-only checks */ - if (conn->newurl) { + if (conn->newurl && k->returnbeforebody) { /* abort after the headers if "follow Location" is set */ infof (data, "Send request to this URL: %s\n", conn->newurl); k->keepon &= ~KEEP_READ; @@ -1258,6 +1263,7 @@ CURLcode Curl_readwrite_init(struct connectdata *conn) k->maxfd = (conn->sockfd>conn->writesockfd? conn->sockfd:conn->writesockfd)+1; k->hbufp = data->state.headerbuff; + k->returnbeforebody=FALSE; Curl_pgrsTime(data, TIMER_PRETRANSFER); Curl_speedinit(data); |