summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Schlatter <mschlatter@gestour.com>2019-03-11 17:15:34 +0100
committerDaniel Stenberg <daniel@haxx.se>2019-03-13 10:58:52 +0100
commitdd8a19f8a05b59394d1ab33c09497e8db884742a (patch)
tree5751407cd7e25c91d18e277e559336040b93bb87
parent5add3514e689a2cc9bc22413c25e9748c9180f41 (diff)
downloadcurl-dd8a19f8a05b59394d1ab33c09497e8db884742a.tar.gz
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
-rw-r--r--lib/http.c3
-rw-r--r--tests/data/test10975
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/http.c b/lib/http.c
index 3618f8728..3f41a451b 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 7512a2e7d..7eb7b5f3d 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
<strip>
^User-Agent: curl/.*
</strip>
-<protocol>
+<protocol nonewline="yes">
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
</protocol>
</verify>