Commit c67a99ff authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

- When libcurl was doing a HTTP POST and the server would respond with

  "Connection: close" and actually close the connection after the
  response-body, libcurl could still have outstanding data to send and it
  would not properly notice this and stop sending. This caused weirdness and
  sad faces. http://curl.haxx.se/bug/view.cgi?id=2080222

  Note that there are still reasons to consider libcurl's behavior when
  getting a >= 400 response code while sending data, as Craig Perras' note
  "http upload: how to stop on error" specifies:
  http://curl.haxx.se/mail/archive-2008-08/0138.html
parent bae4e123
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -6,6 +6,18 @@

                                  Changelog

Daniel Stenberg (29 Aug 2008)
- When libcurl was doing a HTTP POST and the server would respond with
  "Connection: close" and actually close the connection after the
  response-body, libcurl could still have outstanding data to send and it
  would not properly notice this and stop sending. This caused weirdness and
  sad faces. http://curl.haxx.se/bug/view.cgi?id=2080222

  Note that there are still reasons to consider libcurl's behavior when
  getting a >= 400 response code while sending data, as Craig Perras' note
  "http upload: how to stop on error" specifies:
  http://curl.haxx.se/mail/archive-2008-08/0138.html

Daniel Stenberg (28 Aug 2008)
- Dengminwen reported that libcurl would lock a (cookie) share twice (without
  an unlock in between) for a certain case and that in fact works when using
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ This release includes the following bugfixes:
 o proxy closing connect during CONNECT with auth with the multi interface
 o CURLOPT_UPLOAD sets HTTP method back to GET or HEAD when passed in a 0
 o shared cookies could get locked twice
 o deal with closed connection while doing POST/PUT

This release includes the following known bugs:

+1 −3
Original line number Diff line number Diff line
@@ -15,8 +15,6 @@ To be addressed before 7.19.1 (planned release: October 2008)
      http://curl.haxx.se/mail/archive-2008-08/0075.html

162 - Craig Perras' note "http upload: how to stop on error"
      http://curl.haxx.se/mail/archive-2008-08/0138.html Most possibly this is
      also closely related to the bug "race condition while POSTing to
      HTTP/1.0 servers" => http://curl.haxx.se/bug/view.cgi?id=2080222
      http://curl.haxx.se/mail/archive-2008-08/0138.html

163 -
+9 −0
Original line number Diff line number Diff line
@@ -656,6 +656,15 @@ static CURLcode readwrite_data(struct SessionHandle *data,

  } while(data_pending(conn));

  if(((k->keepon & (KEEP_READ|KEEP_WRITE)) == KEEP_WRITE) &&
     conn->bits.close ) {
    /* When we've read the entire thing and the close bit is set, the server may
       now close the connection. If there's now any kind of sending going on from
       our side, we need to stop that immediately. */
    infof(data, "we are done reading and this is set to close, stop send\n");
    k->keepon &= ~KEEP_WRITE; /* no writing anymore either */
  }

  return CURLE_OK;
}

+6 −4
Original line number Diff line number Diff line
@@ -113,12 +113,14 @@ PASVBADIP
 - makes PASV send back an illegal IP in its 227 response

For HTTP/HTTPS:
auth_required - if this is set and a POST/PUT is made without auth, the
auth_required   if this is set and a POST/PUT is made without auth, the
                server will NOT wait for the full request body to get sent
idle -          do nothing after receiving the request, just "sit idle"
stream -        continuously send data to the client, never-ending
pipe: [num] -   tell the server to expect this many HTTP requests before
idle            do nothing after receiving the request, just "sit idle"
stream          continuously send data to the client, never-ending
pipe: [num]     tell the server to expect this many HTTP requests before
                sending back anything, to allow pipelining tests
skip: [num]     instructs the server to ignore reading this many bytes from a PUT
                or POST request
</servercmd>
</reply>

Loading