- if (get_ack(fd[0], result_sha1)) {
- flushes = 0;
- retval = 0;
- if (verbose)
- fprintf(stderr, "got ack\n");
- break;
- }
+
+ do {
+ ack = get_ack(fd[0], result_sha1);
+ if (verbose && ack)
+ fprintf(stderr, "got ack %d %s\n", ack,
+ sha1_to_hex(result_sha1));
+ if (ack == 1) {
+ if (!multi_ack)
+ flushes = 0;
+ retval = 0;
+ goto done;
+ } else if (ack == 2) {
+ multi_ack = 1;
+ mark_common((struct commit *)
+ lookup_object(result_sha1));
+ retval = 0;
+ }
+ } while(ack);