http-fetch: Fix object list corruption in fill_active_slots().

In fill_active_slots() -- if we find an object which has already arrived,
say as part of a pack, /don't/ remove it from the list.  It's already been
prefetched and someone will ask for it later.  Just label it as done and
carry blithely on.  (As it was, the code would dereference a freed object
to continue through the list anyway.)

Signed-off-by: Mark Wooding <mdw@distorted.org.uk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Mark Wooding 2006-02-01 11:44:28 +00:00 committed by Junio C Hamano
parent df9892ffce
commit 09db444fdb
1 changed files with 1 additions and 1 deletions

View File

@ -311,7 +311,7 @@ void fill_active_slots(void)
while (active_requests < max_requests && obj_req != NULL) { while (active_requests < max_requests && obj_req != NULL) {
if (obj_req->state == WAITING) { if (obj_req->state == WAITING) {
if (has_sha1_file(obj_req->sha1)) if (has_sha1_file(obj_req->sha1))
release_object_request(obj_req); obj_req->state = COMPLETE;
else else
start_object_request(obj_req); start_object_request(obj_req);
curl_multi_perform(curlm, &num_transfers); curl_multi_perform(curlm, &num_transfers);