aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2004-08-23 12:34:55 +0000
committerDaniel Stenberg <daniel@haxx.se>2004-08-23 12:34:55 +0000
commit723bfe42e7d0de40fd80b25ec64a88122f2c69f1 (patch)
treef5e8ce66873c80a9eed809c33d220768bd7bf04d
parente35c7dcd72bdcf5b3d491fc61308c346d8a9d489 (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--CHANGES4
-rw-r--r--lib/http.c30
-rw-r--r--tests/data/Makefile.am2
-rw-r--r--tests/data/test18058
-rw-r--r--tests/data/test18159
5 files changed, 140 insertions, 13 deletions
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 @@
+<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>