diff options
author | Eric Wong <e@80x24.org> | 2016-09-13 00:25:57 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-09-13 13:34:04 -0700 |
commit | 2abc848d5431d028b4a6c643c93c7e371e7fdc7e (patch) | |
tree | fd322c408fc841f12b3b5e3bd8766c1e92c118f8 | |
parent | d8b6b84df024b4ce2c10d7e5c725da24dcb19ff6 (diff) | |
download | git-2abc848d5431d028b4a6c643c93c7e371e7fdc7e.tar.gz git-2abc848d5431d028b4a6c643c93c7e371e7fdc7e.tar.xz |
http: always remove curl easy from curlm session on release
We must call curl_multi_remove_handle when releasing the slot to
prevent subsequent calls to curl_multi_add_handle from failing
with CURLM_ADDED_ALREADY (in curl 7.32.1+; older versions
returned CURLM_BAD_EASY_HANDLE)
Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | http.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -855,11 +855,13 @@ void run_active_slot(struct active_request_slot *slot) static void release_active_slot(struct active_request_slot *slot) { closedown_active_slot(slot); - if (slot->curl && curl_session_count > min_curl_sessions) { + if (slot->curl) { xmulti_remove_handle(slot); - curl_easy_cleanup(slot->curl); - slot->curl = NULL; - curl_session_count--; + if (curl_session_count > min_curl_sessions) { + curl_easy_cleanup(slot->curl); + slot->curl = NULL; + curl_session_count--; + } } #ifdef USE_CURL_MULTI fill_active_slots(); |