[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>
This commit is contained in:

committed by
Junio C Hamano

parent
4ae22d96fe
commit
f1a906a387
26
http-fetch.c
26
http-fetch.c
@ -291,11 +291,7 @@ static struct active_request_slot *get_active_slot(void)
|
|||||||
}
|
}
|
||||||
if (slot == NULL) {
|
if (slot == NULL) {
|
||||||
newslot = xmalloc(sizeof(*newslot));
|
newslot = xmalloc(sizeof(*newslot));
|
||||||
#ifdef NO_CURL_EASY_DUPHANDLE
|
newslot->curl = NULL;
|
||||||
newslot->curl = get_curl_handle();
|
|
||||||
#else
|
|
||||||
newslot->curl = curl_easy_duphandle(curl_default);
|
|
||||||
#endif
|
|
||||||
newslot->in_use = 0;
|
newslot->in_use = 0;
|
||||||
newslot->next = NULL;
|
newslot->next = NULL;
|
||||||
|
|
||||||
@ -311,6 +307,14 @@ static struct active_request_slot *get_active_slot(void)
|
|||||||
slot = newslot;
|
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++;
|
active_requests++;
|
||||||
slot->in_use = 1;
|
slot->in_use = 1;
|
||||||
slot->done = 0;
|
slot->done = 0;
|
||||||
@ -612,6 +616,7 @@ void process_curl_messages(void)
|
|||||||
void process_request_queue(void)
|
void process_request_queue(void)
|
||||||
{
|
{
|
||||||
struct transfer_request *request = request_queue_head;
|
struct transfer_request *request = request_queue_head;
|
||||||
|
struct active_request_slot *slot = active_queue_head;
|
||||||
int num_transfers;
|
int num_transfers;
|
||||||
|
|
||||||
while (active_requests < max_requests && request != NULL) {
|
while (active_requests < max_requests && request != NULL) {
|
||||||
@ -624,6 +629,14 @@ void process_request_queue(void)
|
|||||||
}
|
}
|
||||||
request = request->next;
|
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
|
#endif
|
||||||
|
|
||||||
@ -1297,7 +1310,8 @@ int main(int argc, char **argv)
|
|||||||
#endif
|
#endif
|
||||||
slot = active_queue_head;
|
slot = active_queue_head;
|
||||||
while (slot != NULL) {
|
while (slot != NULL) {
|
||||||
curl_easy_cleanup(slot->curl);
|
if (slot->curl != NULL)
|
||||||
|
curl_easy_cleanup(slot->curl);
|
||||||
slot = slot->next;
|
slot = slot->next;
|
||||||
}
|
}
|
||||||
#ifdef USE_CURL_MULTI
|
#ifdef USE_CURL_MULTI
|
||||||
|
Reference in New Issue
Block a user