Loading lib/transfer.c +21 −2 Original line number Diff line number Diff line Loading @@ -500,10 +500,29 @@ static CURLcode readwrite_data(struct SessionHandle *data, } #endif if(stop_reading) if(stop_reading) { /* We've stopped dealing with input, get out of the do-while loop */ if(nread > 0) { if(conn->data->multi && Curl_multi_canPipeline(conn->data->multi)) { infof(data, "Rewinding stream by : %zd" " bytes on url %s (zero-length body)\n", nread, data->state.path); read_rewind(conn, (size_t)nread); } else { infof(data, "Excess found in a non pipelined read:" " excess = %zd" " url = %s (zero-length body)\n", nread, data->state.path); } } break; } } #endif /* CURL_DISABLE_HTTP */ Loading tests/data/Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test1203 test1117 test1118 test1119 test1120 test1300 test1301 test1302 \ test1303 test320 test321 test322 test323 test324 test1121 test581 test580 \ test1304 test1305 test1306 test1307 test582 test583 test808 test809 \ test810 test811 test812 test813 test810 test811 test812 test813 test584 filecheck: @mkdir test-place; \ Loading tests/data/test584 0 → 100644 +102 −0 Original line number Diff line number Diff line <testcase> <info> <keywords> HTTP Pipelining multi </keywords> </info> # Server-side # Silly division of the first request is solely to appease the server which expects n_data_items == n_requests <reply> <data1> HTTP/1.1 200 OK Server: test-server/fake Content-Length: 4 584 </data1> <data2> HTTP/1.1 200 OK </data2> <data3> Server: test-server/fake </data3> <data4> Content-Length: 0 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 5 585 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 4 586 </data4> </reply> # Client-side <client> <server> http </server> <tool> lib530 </tool> <name> HTTP GET using pipelining (nonzero length after zero length) </name> <command> http://%HOSTIP:%HTTPPORT/path/584 </command> </client> # Verify data after the test has been "shot" <verify> <protocol> GET /path/5840001 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* GET /path/5840002 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* GET /path/5840003 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* GET /path/5840004 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* </protocol> <stdout> HTTP/1.1 200 OK Server: test-server/fake Content-Length: 4 584 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 0 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 5 585 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 4 586 </stdout> </verify> </testcase> Loading
lib/transfer.c +21 −2 Original line number Diff line number Diff line Loading @@ -500,10 +500,29 @@ static CURLcode readwrite_data(struct SessionHandle *data, } #endif if(stop_reading) if(stop_reading) { /* We've stopped dealing with input, get out of the do-while loop */ if(nread > 0) { if(conn->data->multi && Curl_multi_canPipeline(conn->data->multi)) { infof(data, "Rewinding stream by : %zd" " bytes on url %s (zero-length body)\n", nread, data->state.path); read_rewind(conn, (size_t)nread); } else { infof(data, "Excess found in a non pipelined read:" " excess = %zd" " url = %s (zero-length body)\n", nread, data->state.path); } } break; } } #endif /* CURL_DISABLE_HTTP */ Loading
tests/data/Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test1203 test1117 test1118 test1119 test1120 test1300 test1301 test1302 \ test1303 test320 test321 test322 test323 test324 test1121 test581 test580 \ test1304 test1305 test1306 test1307 test582 test583 test808 test809 \ test810 test811 test812 test813 test810 test811 test812 test813 test584 filecheck: @mkdir test-place; \ Loading
tests/data/test584 0 → 100644 +102 −0 Original line number Diff line number Diff line <testcase> <info> <keywords> HTTP Pipelining multi </keywords> </info> # Server-side # Silly division of the first request is solely to appease the server which expects n_data_items == n_requests <reply> <data1> HTTP/1.1 200 OK Server: test-server/fake Content-Length: 4 584 </data1> <data2> HTTP/1.1 200 OK </data2> <data3> Server: test-server/fake </data3> <data4> Content-Length: 0 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 5 585 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 4 586 </data4> </reply> # Client-side <client> <server> http </server> <tool> lib530 </tool> <name> HTTP GET using pipelining (nonzero length after zero length) </name> <command> http://%HOSTIP:%HTTPPORT/path/584 </command> </client> # Verify data after the test has been "shot" <verify> <protocol> GET /path/5840001 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* GET /path/5840002 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* GET /path/5840003 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* GET /path/5840004 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* </protocol> <stdout> HTTP/1.1 200 OK Server: test-server/fake Content-Length: 4 584 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 0 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 5 585 HTTP/1.1 200 OK Server: test-server/fake Content-Length: 4 586 </stdout> </verify> </testcase>