From 723bfe42e7d0de40fd80b25ec64a88122f2c69f1 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 23 Aug 2004 12:34:55 +0000 Subject: Roman Koifman pointed out that libcurl send Expect: 100-continue on POSTs and PUTs even when told to use HTTP 1.0, which is not correct. --- CHANGES | 4 ++++ lib/http.c | 30 +++++++++++++++---------- tests/data/Makefile.am | 2 +- tests/data/test180 | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/data/test181 | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 140 insertions(+), 13 deletions(-) create mode 100644 tests/data/test180 create mode 100644 tests/data/test181 diff --git a/CHANGES b/CHANGES index 8f4b86421..2e05f7c29 100644 --- a/CHANGES +++ b/CHANGES @@ -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 @@ + + +HTTP/1.0 200 OK swsclose +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +blablabla + + + + +# Client-side + + +http + + +HTTP 1.0 PUT + + +http://%HOSTIP:%HOSTPORT/we/want/180 -T log/test180.txt --http1.0 + + +Weird + file + to + upload +for + testing +the + PUT + feature + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +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 + + 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 @@ + + +HTTP/1.0 200 OK swsclose +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake + +blablabla + + + + +# Client-side + + +http + + +HTTP 1.0 POST + + +http://%HOSTIP:%HOSTPORT/we/want/181 --data-binary @log/test181.txt --http1.0 + + +Weird + file + to + upload +for + testing +the + POST + feature + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +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 + + -- cgit v1.2.3