diff options
Diffstat (limited to 'lib/multi.c')
-rw-r--r-- | lib/multi.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/lib/multi.c b/lib/multi.c index 3af460da4..cab303049 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -2231,6 +2231,8 @@ static CURLMcode multi_socket(struct Curl_multi *multi, data = NULL; /* set data to NULL again to avoid calling multi_runsingle() in case there's no need to */ + now = Curl_tvnow(); /* get a newer time since the multi_runsingle() loop + may have taken some time */ } } else { @@ -2241,30 +2243,6 @@ static CURLMcode multi_socket(struct Curl_multi *multi, memset(&multi->timer_lastcall, 0, sizeof(multi->timer_lastcall)); } - /* Compensate for bad precision timers that might've triggered too early. - - This precaution was added in commit 2c72732ebf3da5e as a result of bad - resolution in the windows function use(d). - - The problematic case here is when using the multi_socket API and libcurl - has told the application about a timeout, and that timeout is what fires - off a bit early. As we don't have any IDs associated with the timeout we - can't tell which timeout that fired off but we only have the times to use - to check what to do. If it fires off too early, we don't run the correct - actions and we don't tell the application again about the same timeout as - was already first in the queue... - - Originally we made the timeouts run 40 milliseconds early on all systems, - but now we have an #ifdef setup to provide a decent precaution inaccuracy - margin. - */ - - now.tv_usec += MULTI_TIMEOUT_INACCURACY; - if(now.tv_usec >= 1000000) { - now.tv_sec++; - now.tv_usec -= 1000000; - } - /* * The loop following here will go on as long as there are expire-times left * to process in the splay and 'data' will be re-assigned for every expired |