Refactor http.h USE_CURL_MULTI fill_active_slots().
This removes all of the boilerplate and http-internal stuff from fill_active_slots() and makes it easy to turn into a callback. Signed-off-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
077d6f72c7
commit
45c1741235
23
http-push.c
23
http-push.c
@ -795,38 +795,27 @@ static void finish_request(struct transfer_request *request)
|
||||
}
|
||||
|
||||
#ifdef USE_CURL_MULTI
|
||||
void fill_active_slots(void)
|
||||
int fill_active_slot(void)
|
||||
{
|
||||
struct transfer_request *request = request_queue_head;
|
||||
struct transfer_request *next;
|
||||
struct active_request_slot *slot = active_queue_head;
|
||||
int num_transfers;
|
||||
|
||||
if (aborted)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
while (active_requests < max_requests && request != NULL) {
|
||||
next = request->next;
|
||||
for (request = request_queue_head; request; request = request->next) {
|
||||
if (request->state == NEED_FETCH) {
|
||||
start_fetch_loose(request);
|
||||
return 1;
|
||||
} else if (pushing && request->state == NEED_PUSH) {
|
||||
if (remote_dir_exists[request->obj->sha1[0]] == 1) {
|
||||
start_put(request);
|
||||
} else {
|
||||
start_mkcol(request);
|
||||
}
|
||||
curl_multi_perform(curlm, &num_transfers);
|
||||
return 1;
|
||||
}
|
||||
request = next;
|
||||
}
|
||||
|
||||
while (slot != NULL) {
|
||||
if (!slot->in_use && slot->curl != NULL) {
|
||||
curl_easy_cleanup(slot->curl);
|
||||
slot->curl = NULL;
|
||||
}
|
||||
slot = slot->next;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user