mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
- Dmitry Kurochkin fixed Curl_done() for pipelining, as it could previously
crash!
This commit is contained in:
parent
ceb5a8ca7b
commit
1bfbd25027
3
CHANGES
3
CHANGES
@ -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.
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
15
lib/url.c
15
lib/url.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user