]> git.ipfire.org Git - thirdparty/git.git/commitdiff
fetch-pack: refactor add_haves()
authorJonathan Tan <jonathantanmy@google.com>
Fri, 9 Apr 2021 01:10:00 +0000 (18:10 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 9 Apr 2021 04:50:21 +0000 (21:50 -0700)
A subsequent commit will need part, but not all, of the functionality in
add_haves(), so move some of its functionality to its sole caller
send_fetch_request().

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
fetch-pack.c

index 9f3901cdbae10143063667d5ad054185d68c2379..128ad47d2a8fbbf254dc0ea0744092bf4e95c419 100644 (file)
@@ -1195,11 +1195,9 @@ static void add_common(struct strbuf *req_buf, struct oidset *common)
 }
 
 static int add_haves(struct fetch_negotiator *negotiator,
-                    int seen_ack,
                     struct strbuf *req_buf,
-                    int *haves_to_send, int *in_vain)
+                    int *haves_to_send)
 {
-       int ret = 0;
        int haves_added = 0;
        const struct object_id *oid;
 
@@ -1209,17 +1207,10 @@ static int add_haves(struct fetch_negotiator *negotiator,
                        break;
        }
 
-       *in_vain += haves_added;
-       if (!haves_added || (seen_ack && *in_vain >= MAX_IN_VAIN)) {
-               /* Send Done */
-               packet_buf_write(req_buf, "done\n");
-               ret = 1;
-       }
-
        /* Increase haves to send on next round */
        *haves_to_send = next_flush(1, *haves_to_send);
 
-       return ret;
+       return haves_added;
 }
 
 static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
@@ -1228,7 +1219,8 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
                              int *haves_to_send, int *in_vain,
                              int sideband_all, int seen_ack)
 {
-       int ret = 0;
+       int haves_added;
+       int done_sent = 0;
        const char *hash_name;
        struct strbuf req_buf = STRBUF_INIT;
 
@@ -1312,9 +1304,13 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
        /* Add all of the common commits we've found in previous rounds */
        add_common(&req_buf, common);
 
-       /* Add initial haves */
-       ret = add_haves(negotiator, seen_ack, &req_buf,
-                       haves_to_send, in_vain);
+       haves_added = add_haves(negotiator, &req_buf, haves_to_send);
+       *in_vain += haves_added;
+       if (!haves_added || (seen_ack && *in_vain >= MAX_IN_VAIN)) {
+               /* Send Done */
+               packet_buf_write(&req_buf, "done\n");
+               done_sent = 1;
+       }
 
        /* Send request */
        packet_buf_flush(&req_buf);
@@ -1322,7 +1318,7 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
                die_errno(_("unable to write request to remote"));
 
        strbuf_release(&req_buf);
-       return ret;
+       return done_sent;
 }
 
 /*