diff options
author | Jay Satiro <raysatiro@yahoo.com> | 2017-03-11 18:21:31 -0500 |
---|---|---|
committer | Jay Satiro <raysatiro@yahoo.com> | 2017-03-11 18:22:42 -0500 |
commit | ec1d0ed1c14d1b2ed06d8914c19b3df2da575005 (patch) | |
tree | eb6ef16bc243593a4b6ea4e2f2c17afcb582c0b3 /tests/data/test1287 | |
parent | e08c0cd3275727978b69a1087bcebe0e38a5c9c9 (diff) |
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
Diffstat (limited to 'tests/data/test1287')
-rw-r--r-- | tests/data/test1287 | 90 |
1 files changed, 90 insertions, 0 deletions
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 @@ +<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> |