mirror of
https://github.com/moparisthebest/curl
synced 2024-11-12 04:25:08 -05:00
http_proxy: only loop on 407 + close if we have credentials
... to fix the retry-loop. Add test 718 to verify. Reported-by: Daniel Kurečka Fixes #6828 Closes #6850
This commit is contained in:
parent
00b89ec641
commit
605aa03ac1
@ -358,7 +358,8 @@ static CURLcode CONNECT(struct Curl_easy *data,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(gotbytes <= 0) {
|
else if(gotbytes <= 0) {
|
||||||
if(data->set.proxyauth && data->state.authproxy.avail) {
|
if(data->set.proxyauth && data->state.authproxy.avail &&
|
||||||
|
data->state.aptr.proxyuserpwd) {
|
||||||
/* proxy auth was requested and there was proxy auth available,
|
/* proxy auth was requested and there was proxy auth available,
|
||||||
then deem this as "mere" proxy disconnect */
|
then deem this as "mere" proxy disconnect */
|
||||||
conn->bits.proxy_connect_closed = TRUE;
|
conn->bits.proxy_connect_closed = TRUE;
|
||||||
|
@ -94,6 +94,7 @@ test670 test671 test672 test673 test674 test675 \
|
|||||||
\
|
\
|
||||||
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
|
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
|
||||||
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
|
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
|
||||||
|
test718 \
|
||||||
\
|
\
|
||||||
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
|
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
|
||||||
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
|
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
|
||||||
|
59
tests/data/test718
Normal file
59
tests/data/test718
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<testcase>
|
||||||
|
<info>
|
||||||
|
<keywords>
|
||||||
|
HTTP
|
||||||
|
HTTP GET
|
||||||
|
HTTP CONNECT
|
||||||
|
HTTP proxy
|
||||||
|
proxytunnel
|
||||||
|
HTTP proxy Digest auth
|
||||||
|
</keywords>
|
||||||
|
</info>
|
||||||
|
|
||||||
|
# Server-side
|
||||||
|
<reply>
|
||||||
|
|
||||||
|
# this is returned first since we get no proxy-auth
|
||||||
|
<connect>
|
||||||
|
HTTP/1.1 407 Authorization Required to proxy me swsclose
|
||||||
|
Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"
|
||||||
|
</connect>
|
||||||
|
|
||||||
|
<datacheck>
|
||||||
|
HTTP/1.1 407 Authorization Required to proxy me swsclose
|
||||||
|
Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"
|
||||||
|
</datacheck>
|
||||||
|
</reply>
|
||||||
|
|
||||||
|
# Client-side
|
||||||
|
<client>
|
||||||
|
<server>
|
||||||
|
http
|
||||||
|
</server>
|
||||||
|
<features>
|
||||||
|
!SSPI
|
||||||
|
crypto
|
||||||
|
proxy
|
||||||
|
</features>
|
||||||
|
<name>
|
||||||
|
HTTP proxy CONNECT (no auth) with proxy returning 407 and closing
|
||||||
|
</name>
|
||||||
|
<command>
|
||||||
|
http://test.remote.haxx.se.%TESTNUMBER:8990/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxytunnel
|
||||||
|
</command>
|
||||||
|
</client>
|
||||||
|
|
||||||
|
# Verify data after the test has been "shot"
|
||||||
|
<verify>
|
||||||
|
<protocol>
|
||||||
|
CONNECT test.remote.haxx.se.%TESTNUMBER:8990 HTTP/1.1
|
||||||
|
Host: test.remote.haxx.se.%TESTNUMBER:8990
|
||||||
|
User-Agent: curl/%VERSION
|
||||||
|
Proxy-Connection: Keep-Alive
|
||||||
|
|
||||||
|
</protocol>
|
||||||
|
<errorcode>
|
||||||
|
56
|
||||||
|
</errorcode>
|
||||||
|
</verify>
|
||||||
|
</testcase>
|
Loading…
Reference in New Issue
Block a user