On Mon, 6 Dec 2010, David Woodhouse wrote:

It ends up in Curl_getaddrinfo() which calls init_resolve_thread() and spawns a thread to go and look up the IP address to use.

curl_multi_socket_all() then returns zero.

The thread spawned by init_resolve_thread() then completes its task and exits, but nobody ever tells us. So nothing happens to this connection until later, when we try to make *another* request and finally call curl_multi_socket_all() again.

It certainly sounds like a bug in that it doesn't set the timeout properly - during the threaded resolver phase it should set a short timeout to essentially cause a polling effect since there's no socket to wait for then.

I've not personally played around a lot with the threaded resolver and especially not in combination with the multi interface, but we did a lot of timeout fixes for the multi interface in the 7.21.2 release. It would be really interesting to get to know if you still experience this problem with that libcurl version.

--

 / daniel.haxx.se
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to