diff options
author | Nick Hengeveld <nickh@reactrix.com> | 2005-10-21 12:06:10 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-10-21 19:20:17 -0700 |
commit | f1a906a387a2155069e02b09c33dabd6d058ede5 (patch) | |
tree | 6763400c36447da5ec12509f6e2378f203ba0cb1 /http-fetch.c | |
parent | 4ae22d96fe9248dac4f26b1fc91154ba5e879799 (diff) | |
download | git-f1a906a387a2155069e02b09c33dabd6d058ede5.tar.gz |
[PATCH 1/3] Clean up CURL handles in unused request slots
Clean up CURL handles in unused request slots
Signed-off-by: Nick Hengeveld <nickh@reactrix.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'http-fetch.c')
-rw-r--r-- | http-fetch.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/http-fetch.c b/http-fetch.c index a7dc2cc3bd..d26fae8472 100644 --- a/http-fetch.c +++ b/http-fetch.c @@ -291,11 +291,7 @@ static struct active_request_slot *get_active_slot(void) } if (slot == NULL) { newslot = xmalloc(sizeof(*newslot)); -#ifdef NO_CURL_EASY_DUPHANDLE - newslot->curl = get_curl_handle(); -#else - newslot->curl = curl_easy_duphandle(curl_default); -#endif + newslot->curl = NULL; newslot->in_use = 0; newslot->next = NULL; @@ -311,6 +307,14 @@ static struct active_request_slot *get_active_slot(void) slot = newslot; } + if (slot->curl == NULL) { +#ifdef NO_CURL_EASY_DUPHANDLE + slot->curl = get_curl_handle(); +#else + slot->curl = curl_easy_duphandle(curl_default); +#endif + } + active_requests++; slot->in_use = 1; slot->done = 0; @@ -612,6 +616,7 @@ void process_curl_messages(void) void process_request_queue(void) { struct transfer_request *request = request_queue_head; + struct active_request_slot *slot = active_queue_head; int num_transfers; while (active_requests < max_requests && request != NULL) { @@ -624,6 +629,14 @@ void process_request_queue(void) } request = request->next; } + + while (slot != NULL) { + if (!slot->in_use && slot->curl != NULL) { + curl_easy_cleanup(slot->curl); + slot->curl = NULL; + } + slot = slot->next; + } } #endif @@ -1297,7 +1310,8 @@ int main(int argc, char **argv) #endif slot = active_queue_head; while (slot != NULL) { - curl_easy_cleanup(slot->curl); + if (slot->curl != NULL) + curl_easy_cleanup(slot->curl); slot = slot->next; } #ifdef USE_CURL_MULTI |