diff options
-rw-r--r-- | CHANGES | 5 | ||||
-rw-r--r-- | RELEASE-NOTES | 4 | ||||
-rw-r--r-- | lib/multi.c | 4 |
3 files changed, 12 insertions, 1 deletions
@@ -6,6 +6,11 @@ Changelog +Daniel (25 August 2006) +- Armel Asselin reported that the 'running_handles' counter wasn't updated + properly if you removed a "live" handle from a multi handle with + curl_multi_remove_handle(). + Daniel (22 August 2006) - David McCreedy fixed a remaining mistake from the August 19 TYPE change. diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 586c01e0c..cc014a2b3 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -16,7 +16,9 @@ This release includes the following changes: This release includes the following bugfixes: - p (FTP) EPRT transfers with IPv6 didn't work properly + o running_handles' counter wasn't always updated properly when + curl_multi_remove_handle() was used + o (FTP) EPRT transfers with IPv6 didn't work properly o (FTP) SINGLECWD mode and using files in the root dir o (HTTP) Expect: header disabling work better o (HTTP) "Expect: 100-continue" disable on second POST on re-used connection diff --git a/lib/multi.c b/lib/multi.c index d822bda52..c1ff12e29 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -386,6 +386,10 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle, if(easy) { /* If the 'state' is not INIT or COMPLETED, we might need to do something nice to put the easy_handle in a good known state when this returns. */ + if(easy->state != CURLM_STATE_COMPLETED) + /* this handle is "alive" so we need to count down the total number of + alive connections when this is removed */ + multi->num_alive--; /* The timer must be shut down before easy->multi is set to NULL, else the timenode will remain in the splay tree after |