diff options
Diffstat (limited to 'http-fetch.c')
-rw-r--r-- | http-fetch.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/http-fetch.c b/http-fetch.c index dd9ea4ca17..d1e4593ba7 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) { |