diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2008-01-29 12:58:25 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2008-01-29 12:58:25 +0000 | 
| commit | 1bfbd250272d019949c89e48bfbeb7cd00d20029 (patch) | |
| tree | 5f831e6edb5a0f0974c6fb7dc69c314a6ecc708f | |
| parent | ceb5a8ca7bc340ea14588fc145a653fbf0d1dc2a (diff) | |
- Dmitry Kurochkin fixed Curl_done() for pipelining, as it could previously
  crash!
| -rw-r--r-- | CHANGES | 3 | ||||
| -rw-r--r-- | RELEASE-NOTES | 4 | ||||
| -rw-r--r-- | docs/KNOWN_BUGS | 3 | ||||
| -rw-r--r-- | lib/url.c | 15 | 
4 files changed, 15 insertions, 10 deletions
@@ -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. diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 5a9f5848c..b8eabdb92 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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) diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS index 566592ffd..c40219bb4 100644 --- a/docs/KNOWN_BUGS +++ b/docs/KNOWN_BUGS @@ -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 @@ -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);  | 
