64 lines
2.2 KiB
Diff
64 lines
2.2 KiB
Diff
From 5a51924c2505c1d5616904aa732fdaedd74d3ffe Mon Sep 17 00:00:00 2001
|
|
From: Marc Schlatter <mschlatter@gestour.com>
|
|
Date: Mon, 11 Mar 2019 17:15:34 +0100
|
|
Subject: [PATCH] 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
|
|
|
|
Upstream-commit: dd8a19f8a05b59394d1ab33c09497e8db884742a
|
|
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
|
---
|
|
lib/http.c | 3 ++-
|
|
tests/data/test1097 | 5 +++--
|
|
2 files changed, 5 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/lib/http.c b/lib/http.c
|
|
index e727ed8..26eb52d 100644
|
|
--- a/lib/http.c
|
|
+++ b/lib/http.c
|
|
@@ -1991,7 +1991,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
|
|
if(result)
|
|
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 7512a2e..7eb7b5f 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>
|
|
--
|
|
2.26.2
|
|
|