Commit 723bfe42 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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.
parent e35c7dcd
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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.
+18 −12
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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

tests/data/test180

0 → 100644
+58 −0
Original line number Diff line number Diff line
<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>

tests/data/test181

0 → 100644
+59 −0
Original line number Diff line number Diff line
<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>