mirror of
https://github.com/curl/curl.git
synced 2026-08-25 18:33:42 +03:00
http_proxy: Ignore TE and CL in CONNECT 2xx responses
A client MUST ignore any Content-Length or Transfer-Encoding header
fields received in a successful response to CONNECT.
"Successful" described as: 2xx (Successful). RFC 7231 4.3.6
Prior to this change such a case would cause an error.
In some ways this bug appears to be a regression since c50b878. Prior to
that libcurl may have appeared to function correctly in such cases by
acting on those headers instead of causing an error. But that behavior
was also incorrect.
Bug: https://github.com/curl/curl/issues/1317
Reported-by: mkzero@users.noreply.github.com
This commit is contained in:
parent
e08c0cd327
commit
ec1d0ed1c1
3 changed files with 112 additions and 21 deletions
90
tests/data/test1287
Normal file
90
tests/data/test1287
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
<testcase>
|
||||
<info>
|
||||
<keywords>
|
||||
HTTP
|
||||
HTTP GET
|
||||
HTTP CONNECT
|
||||
proxytunnel
|
||||
</keywords>
|
||||
</info>
|
||||
#
|
||||
# Server-side
|
||||
<reply>
|
||||
<data>
|
||||
HTTP/1.1 200 OK
|
||||
Date: Thu, 09 Nov 2010 14:49:00 GMT
|
||||
Server: test-server/fake swsclose
|
||||
Content-Type: text/html
|
||||
Funny-head: yesyes
|
||||
Content-Length: 9
|
||||
|
||||
contents
|
||||
</data>
|
||||
|
||||
# The purpose of this test is to make sure curl ignores headers
|
||||
# Content-Length and Transfer-Encoding in a successful CONNECT 2xx reply.
|
||||
<connect>
|
||||
HTTP/1.1 200 Mighty fine indeed
|
||||
Content-Length: 123
|
||||
Transfer-Encoding: chunked
|
||||
|
||||
</connect>
|
||||
|
||||
<datacheck>
|
||||
HTTP/1.1 200 Mighty fine indeed
|
||||
Content-Length: 123
|
||||
Transfer-Encoding: chunked
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
Date: Thu, 09 Nov 2010 14:49:00 GMT
|
||||
Server: test-server/fake swsclose
|
||||
Content-Type: text/html
|
||||
Funny-head: yesyes
|
||||
Content-Length: 9
|
||||
|
||||
contents
|
||||
</datacheck>
|
||||
</reply>
|
||||
|
||||
#
|
||||
# Client-side
|
||||
<client>
|
||||
<server>
|
||||
http
|
||||
http-proxy
|
||||
</server>
|
||||
<name>
|
||||
HTTP over proxy-tunnel ignore TE and CL in CONNECT 2xx responses
|
||||
</name>
|
||||
<command>
|
||||
-v --proxytunnel -x %HOSTIP:%PROXYPORT http://test.1287:%HTTPPORT/we/want/that/page/1287
|
||||
</command>
|
||||
</client>
|
||||
|
||||
#
|
||||
# Verify data after the test has been "shot"
|
||||
<verify>
|
||||
<strip>
|
||||
^User-Agent:.*
|
||||
</strip>
|
||||
<proxy>
|
||||
CONNECT test.1287:%HTTPPORT HTTP/1.1
|
||||
Host: test.1287:%HTTPPORT
|
||||
Proxy-Connection: Keep-Alive
|
||||
|
||||
</proxy>
|
||||
<protocol>
|
||||
GET /we/want/that/page/1287 HTTP/1.1
|
||||
Host: test.1287:%HTTPPORT
|
||||
Accept: */*
|
||||
|
||||
</protocol>
|
||||
<file name="log/stderr1287" mode="text">
|
||||
* Ignoring Content-Length in CONNECT 200 response
|
||||
* Ignoring Transfer-Encoding in CONNECT 200 response
|
||||
</file>
|
||||
<stripfile>
|
||||
s/^.*(?=\* Ignoring (?:Content-Length|Transfer-Encoding) )// or $_ = ''
|
||||
</stripfile>
|
||||
</verify>
|
||||
</testcase>
|
||||
Loading…
Add table
Add a link
Reference in a new issue