Skip to content

Commit

Permalink
Fix random crashes in http_cleanup()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Mike Hommey authored and Junio C Hamano committed Mar 3, 2008
1 parent d3df427 commit f23d1f7
Showing 1 changed file with 3 additions and 11 deletions.
14 changes: 3 additions & 11 deletions http.c
Original file line number Diff line number Diff line change
Expand Up @@ -281,23 +281,15 @@ void http_init(void)
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;
}
Expand Down

0 comments on commit f23d1f7

Please sign in to comment.