HTTP: Free (proxy)userpwd for NTLM/Negotiate after sending a request

Sending NTLM/Negotiate header again after successful authentication
breaks the connection with certain Proxies and request types (POST to MS
Forefront).
This commit is contained in:
Stefan Bühler 2014-11-24 09:23:07 +01:00 committed by Daniel Stenberg
parent 5dc68dd609
commit 87c4abb611

View File

@ -2323,12 +2323,27 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
); );
/* /*
* Free userpwd now --- cannot reuse this for Negotiate and possibly NTLM * Free userpwd for Negotiate/NTLM. Cannot reuse as it is associated with
* with basic and digest, it will be freed anyway by the next request * the connection and shouldn't be repeated over it either.
*/ */
switch (data->state.authhost.picked) {
case CURLAUTH_NEGOTIATE:
case CURLAUTH_NTLM:
case CURLAUTH_NTLM_WB:
Curl_safefree(conn->allocptr.userpwd);
break;
}
Curl_safefree (conn->allocptr.userpwd); /*
conn->allocptr.userpwd = NULL; * Same for proxyuserpwd
*/
switch (data->state.authproxy.picked) {
case CURLAUTH_NEGOTIATE:
case CURLAUTH_NTLM:
case CURLAUTH_NTLM_WB:
Curl_safefree(conn->allocptr.proxyuserpwd);
break;
}
if(result) if(result)
return result; return result;