mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
- Igor filed bug #2111613 (http://curl.haxx.se/bug/view.cgi?id=2111613) that
eventually identified a flaw in how the multi_socket interface in some cases missed to call the timeout callback when easy interfaces are removed and added within the same millisecond.
This commit is contained in:
parent
450348d6bd
commit
544f2f74df
5
CHANGES
5
CHANGES
@ -7,6 +7,11 @@
|
||||
Changelog
|
||||
|
||||
Daniel Stenberg (8 Oct 2008)
|
||||
- Igor filed bug #2111613 (http://curl.haxx.se/bug/view.cgi?id=2111613) that
|
||||
eventually identified a flaw in how the multi_socket interface in some cases
|
||||
missed to call the timeout callback when easy interfaces are removed and
|
||||
added within the same millisecond.
|
||||
|
||||
- Igor Novoseltsev brought a patch that introduced two new options to
|
||||
curl_easy_setopt: CURLOPT_USERNAME and CURLOPT_PASSWORD that sort of
|
||||
deprecates the good old CURLOPT_USERPWD since they allow applications to set
|
||||
|
@ -34,6 +34,7 @@ This release includes the following bugfixes:
|
||||
o CURLOPT_RANGE now works for SFTP downloads
|
||||
o FTP SIZE response 550 now causes CURLE_REMOTE_FILE_NOT_FOUND
|
||||
o CURLINFO_PRIMARY_IP fixed for persistent connection re-use cases
|
||||
o remove_handle/add_handle multi interface timer callback flaw
|
||||
|
||||
This release includes the following known bugs:
|
||||
|
||||
|
18
lib/multi.c
18
lib/multi.c
@ -532,6 +532,18 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle,
|
||||
/* increase the alive-counter */
|
||||
multi->num_alive++;
|
||||
|
||||
/* A somewhat crude work-around for a little glitch in update_timer() that
|
||||
happens if the lastcall time is set to the same time when the handle is
|
||||
removed as when the next handle is added, as then the check in
|
||||
update_timer() that prevents calling the application multiple times with
|
||||
the same timer infor will not trigger and then the new handle's timeout
|
||||
will not be notified to the app.
|
||||
|
||||
The work-around is thus simply to clear the 'lastcall' variable to force
|
||||
update_timer() to always trigger a callback to the app when a new easy
|
||||
handle is added */
|
||||
memset(&multi->timer_lastcall, 0, sizeof(multi->timer_lastcall));
|
||||
|
||||
update_timer(multi);
|
||||
return CURLM_OK;
|
||||
}
|
||||
@ -1013,9 +1025,9 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
||||
easy->easy_handle->set.errorbuffer[0] = '\0';
|
||||
easy->easy_handle->state.errorbuf = FALSE;
|
||||
|
||||
easy->result = CURLE_OK;
|
||||
result = CURLM_CALL_MULTI_PERFORM;
|
||||
multistate(easy, CURLM_STATE_CONNECT);
|
||||
easy->result = CURLE_OK;
|
||||
result = CURLM_CALL_MULTI_PERFORM;
|
||||
multistate(easy, CURLM_STATE_CONNECT);
|
||||
}
|
||||
else if (CURLE_OK == easy->result) {
|
||||
if(!easy->easy_conn->bits.tunnel_connecting)
|
||||
|
Loading…
Reference in New Issue
Block a user