X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=http-fetch.c;h=d1e4593ba79d17b824e54c4f2b68324de5cf365e;hb=11f0dafe2be419240c0006c3e9112cbad3568baf;hp=dd9ea4ca17d83f3267c4d9d7fe04b5e49a19cff2;hpb=380792390e05e744f9d7eefbc35d1db80e44e27a;p=git.git diff --git a/http-fetch.c b/http-fetch.c index dd9ea4ca..d1e4593b 100644 --- a/http-fetch.c +++ b/http-fetch.c @@ -489,7 +489,10 @@ void process_request_queue() while (active_requests < max_requests && request != NULL) { if (request->state == WAITING) { - start_request(request); + if (has_sha1_file(request->sha1)) + release_request(request); + else + start_request(request); curl_multi_perform(curlm, &num_transfers); } request = request->next; @@ -890,6 +893,11 @@ static int fetch_object(struct alt_base *repo, unsigned char *sha1) if (request == NULL) return error("Couldn't find request for %s in the queue", hex); + if (has_sha1_file(request->sha1)) { + release_request(request); + return 0; + } + #ifdef USE_CURL_MULTI int num_transfers; while (request->state == WAITING) {