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
|
* 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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user