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.
This commit is contained in:
Daniel Stenberg 2004-08-23 12:34:55 +00:00
parent e35c7dcd72
commit 723bfe42e7
5 changed files with 140 additions and 13 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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

58
tests/data/test180 Normal file
View File

@ -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>

59
tests/data/test181 Normal file
View File

@ -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>