summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: d3df427)
raw | patch | inline | side by side (parent: d3df427)
author | Mike Hommey <mh@glandium.org> | |
Mon, 3 Mar 2008 19:30:16 +0000 (20:30 +0100) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Mon, 3 Mar 2008 21:36:44 +0000 (13:36 -0800) |
For some reason, http_cleanup was running all active slots, which could
lead in situations where a freed slot would be accessed in
fill_active_slots. OTOH, we are cleaning up, which means the caller
doesn't care about pending requests. Just forget about them instead
or running them.
Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
lead in situations where a freed slot would be accessed in
fill_active_slots. OTOH, we are cleaning up, which means the caller
doesn't care about pending requests. Just forget about them instead
or running them.
Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http.c | patch | blob | history |
index 5925d07478b763ee9f91d7b273f64f0ae956219b..c7deccb6de6a8a57a2fb57734f05d6ffdc6ae9dc 100644 (file)
--- a/http.c
+++ b/http.c
void http_cleanup(void)
{
struct active_request_slot *slot = active_queue_head;
-#ifdef USE_CURL_MULTI
- char *wait_url;
-#endif
while (slot != NULL) {
struct active_request_slot *next = slot->next;
+ if (slot->curl != NULL) {
#ifdef USE_CURL_MULTI
- if (slot->in_use) {
- curl_easy_getinfo(slot->curl,
- CURLINFO_EFFECTIVE_URL,
- &wait_url);
- fprintf(stderr, "Waiting for %s\n", wait_url);
- run_active_slot(slot);
- }
+ curl_multi_remove_handle(curlm, slot->curl);
#endif
- if (slot->curl != NULL)
curl_easy_cleanup(slot->curl);
+ }
free(slot);
slot = next;
}