cURL
Haxx ad
libcurl

curl's project page on SourceForge.net

Sponsors:
Haxx

cURL > Mailing List > Monthly Index > Single Mail

curl-tracker Archives

[curl:bugs] #1244 multi handle process more than one easy handle, timeout control error

From: Daniel Stenberg <bagder_at_users.sf.net>
Date: Sun, 09 Jun 2013 21:28:40 +0000

Isn't this then more or less a duplicate of bug #1228? A timeout can run up to 40 milliseconds early when the socket API is used. As seen in that bug, we're discussing how to fix it.

---
** [bugs:#1244] multi handle process more than one easy handle, timeout control error**
**Status:** open
**Created:** Sat Jun 08, 2013 08:42 AM UTC by he qin
**Last Updated:** Sat Jun 08, 2013 08:42 AM UTC
**Owner:** nobody
hi
in curl-7.30.0,  if I add two easy handle to one multi, and  I set timeout(80ms) to all the two easy handle, such as:
curl_multi_add_handle(multi, c1);
curl_multi_add_handle(multi, c2);
If c1 returns the result after 50ms and c2 returns the result after 60ms, actually both of them are CURLE_OK, but I got the result is : c1 CURLE_OK, c2 CURLE_OPERATION_TIMEDOUT
read the code, I use curl_multi_socket_action function which call multi_socket.  in multi_socket function, it has a logic as:
now = Curl_tvnow();
Curl_hash_pick---get one easy handle
multi_runsingle---call for the easy handle
now += 40ms
Curl_splaygetbest()----get another easy handle
multi_runsingle() --- call for this easy handle
In my example, like this:(suppose add two easy handles at 2013-06-08 16:32:10.015, set timeout 80ms, so, the timeout at 2013-06-08 16:32:10.095)
now = 2013-06-08 16:32:10.065 (c1 return after 50ms)
Curl_hash_pick ---- c1
multi_runsingle --- c1 ok
now += 40ms (now is 2013-06-08 16:32:10.105)
Curl_splaygetbest() ---- get c2
multi_runsingle() --- call for c2, in this function, will check timeout, diff now and  2013-06-08 16:32:10.095. so, libcurl considers the c2 is timeout.
I think in multi_runsingle function,  should diff (real now) not (now in args which add by 40ms outside)
I see the bug #1228,    https://sourceforge.net/p/curl/bugs/1228/
Daniel Stenberg said:
"I can agree to adding ifdef logic to lower the threshold for systems we think are likely to work, like Linux, but I don't think we should aim for perfect millisecond precision."
As mentioned above, should I believe  the CURLOPT_TIMEOUT_MS or not???
 
---
Sent from sourceforge.net because you indicated interest in <https://sourceforge.net/p/curl/bugs/1244/>
To unsubscribe from further messages, please visit <https://sourceforge.net/auth/subscriptions/>
Received on 2013-06-09

These mail archives are generated by hypermail.

donate! Page updated May 06, 2013.
web site info

File upload with ASP.NET