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
1 changed files with 19 additions and 4 deletions

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
* with basic and digest, it will be freed anyway by the next request
* Free userpwd for Negotiate/NTLM. Cannot reuse as it is associated with
* 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)
return result;