From 3f9b4afdfd7dd3ea16e07af98bb324b9f4277696 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 11 Jul 2011 23:24:45 +0200 Subject: http error response: stop sending when error is received When libcurl has said to the server that there's a POST or PUT coming (with a content-length and all) it has to either deliver that amount of data or it needs to close the connection before trying a second request. Adds test case 1129, 1130 and 1131 The bug report is about when used with 100-continue, but the change is more generic. Bug: http://curl.haxx.se/mail/lib-2011-06/0191.html Reported by: Steven Parkes --- tests/data/Makefile.am | 7 ++-- tests/data/test1129 | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/data/test1130 | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/data/test1131 | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 293 insertions(+), 3 deletions(-) create mode 100644 tests/data/test1129 create mode 100644 tests/data/test1130 create mode 100644 tests/data/test1131 (limited to 'tests/data') diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index ccaa8a36b..9b8e94722 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -71,9 +71,10 @@ test1094 test1095 test1096 test1097 test1098 test1099 test1100 test1101 \ test1102 test1103 test1104 test1105 test1106 test1107 test1108 test1109 \ test1110 test1111 test1112 test1113 test1114 test1115 test1116 test1117 \ test1118 test1119 test1120 test1121 test1122 test1123 test1124 test1125 \ -test1126 test1127 test1128 test1200 test1201 test1202 test1203 test1300 \ -test1301 test1302 test1303 test1304 test1305 test1306 test1307 test1308 \ -test1309 test2000 test2001 test2002 test2003 test2004 test2005 +test1126 test1127 test1128 test1129 test1130 test1131 test1200 test1201 \ +test1202 test1203 test1300 test1301 test1302 test1303 test1304 test1305 \ +test1306 test1307 test1308 test1309 test2000 test2001 test2002 test2003 \ +test2004 test2005 EXTRA_DIST = $(TESTCASES) DISABLED diff --git a/tests/data/test1129 b/tests/data/test1129 new file mode 100644 index 000000000..f47141cd3 --- /dev/null +++ b/tests/data/test1129 @@ -0,0 +1,97 @@ + + + +HTTP +HTTP POST +Expect: 100-continue + + + +# +# Server-side + + +HTTP/1.1 404 NOOOOOOOOO +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 6 +Content-Type: text/html + +-foo- + + + +HTTP/1.1 404 NEITHER +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 6 +Content-Type: text/html + +-foo- + + +# we use skip to make the test server never read the full payload off +# the socket and instead return the response at once + +skip: 1025 + + + +# +# Client-side + +# 1025 x 'x' + +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + +http + + +HTTP POST expect 100-continue with a 404 + + +-d @log/file1129 http://%HOSTIP:%HTTPPORT/1129 http://%HOSTIP:%HTTPPORT/11290001 + + + +# +# Verify data after the test has been "shot" + + +HTTP/1.1 404 NOOOOOOOOO +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 6 +Content-Type: text/html + +-foo- +HTTP/1.1 404 NEITHER +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 6 +Content-Type: text/html + +-foo- + + +^User-Agent:.* + + +POST /1129 HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Accept: */* +Content-Length: 1025 +Content-Type: application/x-www-form-urlencoded +Expect: 100-continue + +POST /11290001 HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Accept: */* +Content-Length: 1025 +Content-Type: application/x-www-form-urlencoded +Expect: 100-continue + + + + diff --git a/tests/data/test1130 b/tests/data/test1130 new file mode 100644 index 000000000..eb1e59f5b --- /dev/null +++ b/tests/data/test1130 @@ -0,0 +1,97 @@ + + + +HTTP +HTTP POST +Expect: 100-continue + + + +# +# Server-side + + +HTTP/1.1 404 NOOOOOOOOO +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 6 +Content-Type: text/html + +-foo- + + + +HTTP/1.1 404 NEITHER +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 6 +Content-Type: text/html + +-foo- + + +# we use skip to make the test server never read the full payload off +# the socket and instead return the response at once + +skip: 100 + + + +# +# Client-side + +# 100 x 'x' + +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + +http + + +HTTP POST forced expect 100-continue with a 404 + + +-d @log/file1130 http://%HOSTIP:%HTTPPORT/1130 http://%HOSTIP:%HTTPPORT/11300001 -H "Expect: 100-continue" + + + +# +# Verify data after the test has been "shot" + + +HTTP/1.1 404 NOOOOOOOOO +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 6 +Content-Type: text/html + +-foo- +HTTP/1.1 404 NEITHER +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 6 +Content-Type: text/html + +-foo- + + +^User-Agent:.* + + +POST /1130 HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Accept: */* +Expect: 100-continue +Content-Length: 100 +Content-Type: application/x-www-form-urlencoded + +POST /11300001 HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Accept: */* +Expect: 100-continue +Content-Length: 100 +Content-Type: application/x-www-form-urlencoded + + + + diff --git a/tests/data/test1131 b/tests/data/test1131 new file mode 100644 index 000000000..96843af54 --- /dev/null +++ b/tests/data/test1131 @@ -0,0 +1,95 @@ + + + +HTTP +HTTP PUT +Expect: 100-continue + + + +# +# Server-side + + +HTTP/1.1 400 NOOOOOOOOO +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 9 +Content-Type: text/html + +FAILURE1 + + + +HTTP/1.1 400 NEITHER +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 9 +Content-Type: text/html + +FAILURE2 + + +# we use skip to make the test server never read the full payload off +# the socket and instead return the response at once + +skip: 100 + + + +# +# Client-side + +# 100 x 'x' + +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + +http + + +HTTP PUT expect 100-continue with a 400 + + +-T log/file1131 http://%HOSTIP:%HTTPPORT/1131 -T log/file1131 http://%HOSTIP:%HTTPPORT/11310001 + + + +# +# Verify data after the test has been "shot" + + +HTTP/1.1 400 NOOOOOOOOO +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 9 +Content-Type: text/html + +FAILURE1 +HTTP/1.1 400 NEITHER +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 9 +Content-Type: text/html + +FAILURE2 + + +^User-Agent:.* + + +PUT /1131 HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Accept: */* +Content-Length: 100 +Expect: 100-continue + +PUT /11310001 HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Accept: */* +Content-Length: 100 +Expect: 100-continue + + + + -- cgit v1.2.3