Commit 1bfbd250 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

- Dmitry Kurochkin fixed Curl_done() for pipelining, as it could previously

  crash!
parent ceb5a8ca
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -7,6 +7,9 @@
                                  Changelog

Daniel S (29 Jan 2008)
- Dmitry Kurochkin fixed Curl_done() for pipelining, as it could previously
  crash!

- Michal Marek fixed minor mistake in test case 553 that prevented it from
  working on other IP-addresses or port numbers.

+2 −2
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ This release includes the following changes:

This release includes the following bugfixes:

 o 
 o improved pipelining

This release includes the following known bugs:

@@ -31,6 +31,6 @@ New curl mirrors:
This release would not have looked like this without help, code, reports and
advice from friends like these:

 Michal Marek
 Michal Marek, Dmitry Kurochkin

        Thanks! (and sorry if I forgot to mention someone)
+0 −3
Original line number Diff line number Diff line
@@ -12,9 +12,6 @@ may have been fixed since this was written!
  wants NTLM and close the connection to the initial CONNECT response:
  http://curl.haxx.se/bug/view.cgi?id=1879375

50. Curl_done() and pipelning aren't totally cool together:
  http://curl.haxx.se/mail/lib-2008-01/0330.html

49. If using --retry and the transfer timeouts (possibly due to using -m or
  -y/-Y) the next attempt doesn't resume the transfer properly from what was
  downloaded in the previous attempt but will truncate and restart at the
+10 −5
Original line number Diff line number Diff line
@@ -4414,11 +4414,6 @@ CURLcode Curl_done(struct connectdata **connp,

  Curl_expire(data, 0); /* stop timer */

  if(conn->bits.done)
    return CURLE_OK; /* Curl_done() has already been called */

  conn->bits.done = TRUE; /* called just now! */

  if(Curl_removeHandleFromPipeline(data, conn->recv_pipe) &&
     conn->readchannel_inuse)
    conn->readchannel_inuse = FALSE;
@@ -4427,6 +4422,16 @@ CURLcode Curl_done(struct connectdata **connp,
    conn->writechannel_inuse = FALSE;
  Curl_removeHandleFromPipeline(data, conn->pend_pipe);

  if(conn->bits.done ||
     (conn->send_pipe->size + conn->recv_pipe->size != 0 &&
      !data->set.reuse_forbid &&
      !conn->bits.close))
    /* Stop if Curl_done() has already been called or pipeline
       is not empty and we do not have to close connection. */
    return CURLE_OK;

  conn->bits.done = TRUE; /* called just now! */

  /* Cleanup possible redirect junk */
  if(data->req.newurl) {
    free(data->req.newurl);