diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2004-08-23 12:34:55 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2004-08-23 12:34:55 +0000 | 
| commit | 723bfe42e7d0de40fd80b25ec64a88122f2c69f1 (patch) | |
| tree | f5e8ce66873c80a9eed809c33d220768bd7bf04d | |
| parent | e35c7dcd72bdcf5b3d491fc61308c346d8a9d489 (diff) | |
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.
| -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>  | 
