From: Alexandre Julliard Date: Wed, 02 May 2007 19:47:19 GMT Subject: Re: [PATCH] http-fetch: Disable use of curl multi support for libcurl < 7.16. Message-ID: <87647bros8.fsf@wine.dyndns.org> In-Reply-To: <7vfy6f3w3w.fsf@assigned-by-dhcp.cox.net> Junio C Hamano writes: > Alexandre Julliard writes: > >> curl_multi_remove_handle() is broken in libcurl < 7.16, in that it >> doesn't correctly update the active handles count when a request is >> aborted. This causes the transfer to hang forever waiting for the >> handle count to become less than the number of active requests. > > Is there a changelog entry for release 7.16 that you can point > at in your commit log message? The changelog for curl 7.16.0 contains this under Bugfixes: * the 'running_handles' counter wasn't always updated properly when curl_multi_remove_handle() was used The corresponding fix in the curl CVS is in lib/multi.c rev 1.97: ---------------------------- revision 1.97 date: 2006-08-25 15:53:22 +0200; author: bagder; state: Exp; lines: +5 -1; commitid: owXRUkUb5VvSmeKr; 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(). ---------------------------- The problem is relatively easy to reproduce (though it's not systematic, depends on network timings) by cloning the Wine repository at http://source.winehq.org/git/wine.git. The symptoms are that it hangs after printing 'walk 4eea356e2d39f1a958afb4d8f5b54381e8972ecf'. It was reported by a Wine developer who couldn't clone the tree with http; he confirmed that upgrading to curl 7.16 fixed it for him. I'm also able to clone it successfully with a http-fetch built without multi support. -- Alexandre Julliard julliard@winehq.org