| <?xml version="1.0" encoding="US-ASCII"?> |
| <testcase> |
| <info> |
| <keywords> |
| HTTP |
| HTTP POST |
| chunked Transfer-Encoding |
| Content-Length |
| </keywords> |
| </info> |
| |
| # Regression test for bug where curl stops reading chunked response |
| # when both Content-Length: 0 and Transfer-Encoding: chunked headers |
| # are present. Per RFC 7230 Section 3.3.3, Transfer-Encoding should |
| # take precedence and Content-Length should be ignored. |
| # The writedelay simulates the timing issue where chunks arrive in |
| # separate packets. |
| |
| # Server-side |
| <reply> |
| <servercmd> |
| writedelay: 500 |
| </servercmd> |
| <data nocheck="yes" crlf="headers"> |
| HTTP/1.1 200 OK |
| content-type: text/json |
| connection: keep-alive |
| content-length: 0 |
| transfer-encoding: chunked |
| |
| 1a |
| random data in first chunk |
| 1d |
| another data in second chunk |
| 15 |
| third and last chunk |
| 0 |
| |
| </data> |
| </reply> |
| |
| # Client-side |
| <client> |
| <server> |
| http |
| </server> |
| <name> |
| HTTP POST response with both Transfer-Encoding chunked and Content-Length 0 |
| </name> |
| <command> |
| http://%HOSTIP:%HTTPPORT/%TESTNUMBER -d "testdata" |
| </command> |
| </client> |
| |
| # Verify data after the test has been "shot" |
| <verify> |
| <protocol nonewline="yes" crlf="headers"> |
| POST /%TESTNUMBER HTTP/1.1 |
| Host: %HOSTIP:%HTTPPORT |
| User-Agent: curl/%VERSION |
| Accept: */* |
| Content-Length: 8 |
| Content-Type: application/x-www-form-urlencoded |
| |
| testdata |
| </protocol> |
| <stdout nonewline="yes" crlf="headers"> |
| HTTP/1.1 200 OK |
| content-type: text/json |
| connection: keep-alive |
| content-length: 0 |
| transfer-encoding: chunked |
| |
| random data in first chunk another data in second chunk third and last chunk |
| </stdout> |
| </verify> |
| </testcase> |