mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
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:
parent
5dc68dd609
commit
87c4abb611
23
lib/http.c
23
lib/http.c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user