From: Marc Schlatter Date: Mon, 11 Mar 2019 16:15:34 +0000 (+0100) Subject: http: send payload when (proxy) authentication is done X-Git-Tag: curl-7_64_1~27 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dd8a19f8a05b59394d1ab33c09497e8db884742a;p=thirdparty%2Fcurl.git http: send payload when (proxy) authentication is done The check that prevents payload from sending in case of authentication doesn't check properly if the authentication is done or not. They're cases where the proxy respond "200 OK" before sending authentication challenge. This change takes care of that. Fixes #2431 Closes #3669 --- diff --git a/lib/http.c b/lib/http.c index 3618f8728b..3f41a451b9 100644 --- a/lib/http.c +++ b/lib/http.c @@ -2060,7 +2060,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) return result; } - if((data->state.authhost.multipass || data->state.authproxy.multipass) && + if(((data->state.authhost.multipass && !data->state.authhost.done) + || (data->state.authproxy.multipass && !data->state.authproxy.done)) && (httpreq != HTTPREQ_GET) && (httpreq != HTTPREQ_HEAD)) { /* Auth is required and we are not authenticated yet. Make a PUT or POST diff --git a/tests/data/test1097 b/tests/data/test1097 index 7512a2e7dd..7eb7b5f3d2 100644 --- a/tests/data/test1097 +++ b/tests/data/test1097 @@ -60,7 +60,7 @@ http://test.a.galaxy.far.far.away.1097:%HTTPPORT/1097 --proxy http://%HOSTIP:%HT ^User-Agent: curl/.* - + CONNECT test.a.galaxy.far.far.away.1097:%HTTPPORT HTTP/1.1 Host: test.a.galaxy.far.far.away.1097:%HTTPPORT Proxy-Authorization: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= @@ -71,9 +71,10 @@ POST /1097 HTTP/1.1 User-Agent: curl/7.19.5-CVS (i686-pc-linux-gnu) libcurl/7.19.5-CVS OpenSSL/0.9.8g zlib/1.2.3.3 c-ares/1.6.1-CVS libidn/1.12 libssh2/1.0.1_CVS Host: test.a.galaxy.far.far.away.1097:%HTTPPORT Accept: */* -Content-Length: 0 +Content-Length: 11 Content-Type: application/x-www-form-urlencoded +dummy=value