mirror of
https://github.com/moparisthebest/curl
synced 2024-12-24 09:08:49 -05:00
NTLM: force the connection to HTTP/1.1
Since v7.62.0, cURL tries to use HTTP/2 whenever the server announces the capability. However, NTLM authentication only works with HTTP/1.1, and will likely remain in that boat (for details, see https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis#when-is-http2-not-supported). When we just found out that we want to use NTLM, and when the current connection runs in HTTP/2 mode, let's force the connection to be closed and to be re-opened using HTTP/1.1. Fixes https://github.com/curl/curl/issues/3341. Closes #3345 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
parent
2456152069
commit
cbea2fd2c7
@ -526,6 +526,12 @@ CURLcode Curl_http_auth_act(struct connectdata *conn)
|
|||||||
pickhost = pickoneauth(&data->state.authhost, authmask);
|
pickhost = pickoneauth(&data->state.authhost, authmask);
|
||||||
if(!pickhost)
|
if(!pickhost)
|
||||||
data->state.authproblem = TRUE;
|
data->state.authproblem = TRUE;
|
||||||
|
if(data->state.authhost.picked == CURLAUTH_NTLM &&
|
||||||
|
conn->httpversion > 11) {
|
||||||
|
infof(data, "Forcing HTTP/1.1 for NTLM");
|
||||||
|
connclose(conn, "Force HTTP/1.1 connection");
|
||||||
|
conn->data->set.httpversion = CURL_HTTP_VERSION_1_1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(conn->bits.proxy_user_passwd &&
|
if(conn->bits.proxy_user_passwd &&
|
||||||
((data->req.httpcode == 407) ||
|
((data->req.httpcode == 407) ||
|
||||||
|
Loading…
Reference in New Issue
Block a user