From ec1d0ed1c14d1b2ed06d8914c19b3df2da575005 Mon Sep 17 00:00:00 2001 From: Jay Satiro Date: Sat, 11 Mar 2017 18:21:31 -0500 Subject: 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 --- tests/data/test1287 | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 tests/data/test1287 (limited to 'tests/data/test1287') diff --git a/tests/data/test1287 b/tests/data/test1287 new file mode 100644 index 000000000..83a2cd040 --- /dev/null +++ b/tests/data/test1287 @@ -0,0 +1,90 @@ + + + +HTTP +HTTP GET +HTTP CONNECT +proxytunnel + + +# +# Server-side + + +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 + + +# The purpose of this test is to make sure curl ignores headers +# Content-Length and Transfer-Encoding in a successful CONNECT 2xx reply. + +HTTP/1.1 200 Mighty fine indeed +Content-Length: 123 +Transfer-Encoding: chunked + + + + +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 + + + +# +# Client-side + + +http +http-proxy + + +HTTP over proxy-tunnel ignore TE and CL in CONNECT 2xx responses + + +-v --proxytunnel -x %HOSTIP:%PROXYPORT http://test.1287:%HTTPPORT/we/want/that/page/1287 + + + +# +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +CONNECT test.1287:%HTTPPORT HTTP/1.1 +Host: test.1287:%HTTPPORT +Proxy-Connection: Keep-Alive + + + +GET /we/want/that/page/1287 HTTP/1.1 +Host: test.1287:%HTTPPORT +Accept: */* + + + +* Ignoring Content-Length in CONNECT 200 response +* Ignoring Transfer-Encoding in CONNECT 200 response + + +s/^.*(?=\* Ignoring (?:Content-Length|Transfer-Encoding) )// or $_ = '' + + + -- cgit v1.2.3