{"thread":{"id":"7946","subject":"[PATCH] http-fetch: Disable use of curl multi support for libcurl < 7.16.","startedAt":"2007-05-02T12:53:23Z","lastAt":"2007-05-02T19:47:19Z","messageCount":3,"participants":["Alexandre Julliard","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"40894","messageId":"87slafs7y4.fsf@wine.dyndns.org","threadId":"7946","inReplyTo":null,"subject":"[PATCH] http-fetch: Disable use of curl multi support for libcurl < 7.16.","fromName":"Alexandre Julliard","fromEmail":"julliard@winehq.org","sentAt":"2007-05-02T12:53:23Z","receivedAt":"2007-05-02T12:53:23Z","isPatch":true,"sender":{"key":"julliard@winehq.org","avatar":null},"body":"curl_multi_remove_handle() is broken in libcurl < 7.16, in that it\ndoesn't correctly update the active handles count when a request is\naborted. This causes the transfer to hang forever waiting for the\nhandle count to become less than the number of active requests.\n\nSigned-off-by: Alexandre Julliard <julliard@winehq.org>\n---\n http.h |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/http.h b/http.h\nindex 324fcf4..69b6b66 100644\n--- a/http.h\n+++ b/http.h\n@@ -6,7 +6,7 @@\n #include <curl/curl.h>\n #include <curl/easy.h>\n \n-#if LIBCURL_VERSION_NUM >= 0x070908\n+#if LIBCURL_VERSION_NUM >= 0x071000\n #define USE_CURL_MULTI\n #define DEFAULT_MAX_REQUESTS 5\n #endif\n-- \n1.5.2.rc1.4.g8c87-dirty\n\n-- \nAlexandre Julliard\njulliard@winehq.org\n"},{"id":"40918","messageId":"7vfy6f3w3w.fsf@assigned-by-dhcp.cox.net","threadId":"7946","inReplyTo":"87slafs7y4.fsf@wine.dyndns.org","subject":"Re: [PATCH] http-fetch: Disable use of curl multi support for libcurl < 7.16.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2007-05-02T18:42:59Z","receivedAt":"2007-05-02T18:42:59Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alexandre Julliard <julliard@winehq.org> writes:\n\n> curl_multi_remove_handle() is broken in libcurl < 7.16, in that it\n> doesn't correctly update the active handles count when a request is\n> aborted. This causes the transfer to hang forever waiting for the\n> handle count to become less than the number of active requests.\n\nIs there a changelog entry for release 7.16 that you can point\nat in your commit log message?\n\nIt's not that I do not believe you, but I'd feel happier to see\nindependent success stories/confirmation, as I do not know if we\nhave broken non-multi codepath lately.  How many people still use\nthe non-multi codepath I wonder?\n\nList?\n"},{"id":"40922","messageId":"87647bros8.fsf@wine.dyndns.org","threadId":"7946","inReplyTo":"7vfy6f3w3w.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] http-fetch: Disable use of curl multi support for libcurl < 7.16.","fromName":"Alexandre Julliard","fromEmail":"julliard@winehq.org","sentAt":"2007-05-02T19:47:19Z","receivedAt":"2007-05-02T19:47:19Z","isPatch":true,"sender":{"key":"julliard@winehq.org","avatar":null},"body":"Junio C Hamano <junkio@cox.net> writes:\n\n> Alexandre Julliard <julliard@winehq.org> writes:\n>\n>> curl_multi_remove_handle() is broken in libcurl < 7.16, in that it\n>> doesn't correctly update the active handles count when a request is\n>> aborted. This causes the transfer to hang forever waiting for the\n>> handle count to become less than the number of active requests.\n>\n> Is there a changelog entry for release 7.16 that you can point\n> at in your commit log message?\n\nThe changelog for curl 7.16.0 contains this under Bugfixes:\n\n* the 'running_handles' counter wasn't always updated properly when\n  curl_multi_remove_handle() was used\n\nThe corresponding fix in the curl CVS is in lib/multi.c rev 1.97:\n\n----------------------------\nrevision 1.97\ndate: 2006-08-25 15:53:22 +0200;  author: bagder;  state: Exp;  lines: +5 -1;  commitid: owXRUkUb5VvSmeKr;\nArmel Asselin reported that the 'running_handles' counter wasn't updated\nproperly if you removed a \"live\" handle from a multi handle with\ncurl_multi_remove_handle().\n----------------------------\n\nThe problem is relatively easy to reproduce (though it's not\nsystematic, depends on network timings) by cloning the Wine repository\nat http://source.winehq.org/git/wine.git. The symptoms are that it\nhangs after printing 'walk 4eea356e2d39f1a958afb4d8f5b54381e8972ecf'.\n\nIt was reported by a Wine developer who couldn't clone the tree with\nhttp; he confirmed that upgrading to curl 7.16 fixed it for him. I'm\nalso able to clone it successfully with a http-fetch built without\nmulti support.\n\n-- \nAlexandre Julliard\njulliard@winehq.org\n"}]}