1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

when we get the auth headers, we still need to read out the full body response

as otherwise we can re-send requests on the same connection nicely
This commit is contained in:
Daniel Stenberg 2003-06-11 15:30:30 +00:00
parent a2eef05198
commit 5ea04a852e

View File

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