On 06/14, Brandon Williams wrote:
> On 06/06, Jonathan Tan wrote:
> > When "ACK %s ready" is received, find_common() clears rev_list in an
> > attempt to stop further "have" lines from being sent [1]. It is much
> > more readable to explicitly break from the loop instead, so do this.
> > 
> > This means that the memory in priority queue will be reclaimed only upon
> > program exit, similar to the cases in which "ACK %s ready" is not
> 
> This seems fine for now though ideally we would remove the global
> priority queue and have it live on the stack somewhere in the call stack
> and it could be cleared unconditionally before returning.

Wait looks like a later commit does just this, maybe stick in a comment
saying a later patch is cleaning this up.

> 
> > received. (A related problem occurs when do_fetch_pack() is invoked a
> > second time in the same process with a possibly non-empty priority
> > queue, but this will be solved in a subsequent patch in this patch set.)
> > 
> > [1] The rationale is further described in the originating commit
> > f2cba9299b ("fetch-pack: Finish negotation if remote replies "ACK %s
> > ready"", 2011-03-14).
> > 
> > Signed-off-by: Jonathan Tan <jonathanta...@google.com>
> > ---
> >  fetch-pack.c | 7 +++----
> >  1 file changed, 3 insertions(+), 4 deletions(-)
> > 
> > diff --git a/fetch-pack.c b/fetch-pack.c
> > index 2812499a5..09f5c83c4 100644
> > --- a/fetch-pack.c
> > +++ b/fetch-pack.c
> > @@ -517,10 +517,8 @@ static int find_common(struct fetch_pack_args *args,
> >                                     mark_common(commit, 0, 1);
> >                                     retval = 0;
> >                                     got_continue = 1;
> > -                                   if (ack == ACK_ready) {
> > -                                           clear_prio_queue(&rev_list);
> > +                                   if (ack == ACK_ready)
> >                                             got_ready = 1;
> > -                                   }
> >                                     break;
> >                                     }
> >                             }
> > @@ -530,6 +528,8 @@ static int find_common(struct fetch_pack_args *args,
> >                             print_verbose(args, _("giving up"));
> >                             break; /* give up */
> >                     }
> > +                   if (got_ready)
> > +                           break;
> >             }
> >     }
> >  done:
> > @@ -1300,7 +1300,6 @@ static int process_acks(struct packet_reader *reader, 
> > struct oidset *common)
> >             }
> >  
> >             if (!strcmp(reader->line, "ready")) {
> > -                   clear_prio_queue(&rev_list);
> >                     received_ready = 1;
> >                     continue;
> >             }
> > -- 
> > 2.17.0.768.g1526ddbba1.dirty
> > 
> 
> -- 
> Brandon Williams

-- 
Brandon Williams

Reply via email to