diff options
-rw-r--r-- | CHANGES | 4 | ||||
-rw-r--r-- | lib/http.c | 30 | ||||
-rw-r--r-- | tests/data/Makefile.am | 2 | ||||
-rw-r--r-- | tests/data/test180 | 58 | ||||
-rw-r--r-- | tests/data/test181 | 59 |
5 files changed, 140 insertions, 13 deletions
@@ -6,6 +6,10 @@ Changelog +Daniel (23 August 2004) +- Roman Koifman pointed out that libcurl send Expect: 100-continue on POSTs + even when told to use HTTP 1.0, which is not correct. + Daniel (20 August 2004) - Alexander Krasnostavsky made the write callback get called even when a zero byte file is downloaded. diff --git a/lib/http.c b/lib/http.c index 07354a1c4..29ce503f8 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1765,10 +1765,12 @@ CURLcode Curl_http(struct connectdata *conn) return result; } - if(!checkheaders(data, "Expect:")) { - /* if not disabled explicitly we add a Expect: 100-continue - to the headers which actually speeds up post operations (as - there is one packet coming back from the web server) */ + if((data->set.httpversion != CURL_HTTP_VERSION_1_0) && + !checkheaders(data, "Expect:")) { + /* if not doing HTTP 1.0 or disabled explicitly, we add a Expect: + 100-continue to the headers which actually speeds up post + operations (as there is one packet coming back from the web + server) */ result = add_bufferf(req_buffer, "Expect: 100-continue\r\n"); if(result) @@ -1832,10 +1834,12 @@ CURLcode Curl_http(struct connectdata *conn) return result; } - if(!checkheaders(data, "Expect:")) { - /* if not disabled explicitly we add a Expect: 100-continue - to the headers which actually speeds up post operations (as - there is one packet coming back from the web server) */ + if((data->set.httpversion != CURL_HTTP_VERSION_1_0) && + !checkheaders(data, "Expect:")) { + /* if not HTTP 1.0 or disabled explicitly, we add a Expect: + 100-continue to the headers which actually speeds up post + operations (as there is one packet coming back from the web + server) */ result = add_bufferf(req_buffer, "Expect: 100-continue\r\n"); if(result) @@ -1945,10 +1949,12 @@ CURLcode Curl_http(struct connectdata *conn) /* set the upload size to the progress meter */ Curl_pgrsSetUploadSize(data, http->postsize); - if(!checkheaders(data, "Expect:")) { - /* if not disabled explicitly we add a Expect: 100-continue to the - headers which actually speeds up post operations (as there is - one packet coming back from the web server) */ + if((data->set.httpversion != CURL_HTTP_VERSION_1_0) && + !checkheaders(data, "Expect:")) { + /* if not HTTP 1.0 or disabled explicitly, we add a Expect: + 100-continue to the headers which actually speeds up post + operations (as there is one packet coming back from the web + server) */ add_bufferf(req_buffer, "Expect: 100-continue\r\n"); data->set.expect100header = TRUE; diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 188cd70c2..4da5fc3af 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -25,7 +25,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test158 test159 test511 test160 test161 test162 test163 test164 \ test512 test165 test166 test167 test168 test169 test170 test171 \ test172 test204 test205 test173 test174 test175 test176 test177 \ - test513 test514 test178 test179 + test513 test514 test178 test179 test180 test181 # The following tests have been removed from the dist since they no longer # work. We need to fix the test suite's FTPS server first, then bring them diff --git a/tests/data/test180 b/tests/data/test180 new file mode 100644 index 000000000..ac4be829f --- /dev/null +++ b/tests/data/test180 @@ -0,0 +1,58 @@ +<reply> +<data> +HTTP/1.0 200 OK swsclose +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +blablabla + +</data> +</reply> + +# Client-side +<client> +<server> +http +</server> + <name> +HTTP 1.0 PUT + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/180 -T log/test180.txt --http1.0 +</command> +<file name="log/test180.txt"> +Weird + file + to + upload +for + testing +the + PUT + feature +</file> +</reply> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +PUT /we/want/180 HTTP/1.0
+Host: 127.0.0.1:8999
+Pragma: no-cache
+Accept: */*
+Content-Length: 78
+
+Weird + file + to + upload +for + testing +the + PUT + feature +</protocol> +</verify> diff --git a/tests/data/test181 b/tests/data/test181 new file mode 100644 index 000000000..db7d92dc8 --- /dev/null +++ b/tests/data/test181 @@ -0,0 +1,59 @@ +<reply> +<data> +HTTP/1.0 200 OK swsclose +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +blablabla + +</data> +</reply> + +# Client-side +<client> +<server> +http +</server> + <name> +HTTP 1.0 POST + </name> + <command> +http://%HOSTIP:%HOSTPORT/we/want/181 --data-binary @log/test181.txt --http1.0 +</command> +<file name="log/test181.txt"> +Weird + file + to + upload +for + testing +the + POST + feature +</file> +</reply> + +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +POST /we/want/181 HTTP/1.0
+Host: 127.0.0.1:8999
+Pragma: no-cache
+Accept: */*
+Content-Length: 79
+Content-Type: application/x-www-form-urlencoded
+
+Weird + file + to + upload +for + testing +the + POST + feature +</protocol> +</verify> |