From 4793b7e86d007c492a76a5fae379ded97008e7fb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 28 Mar 2011 23:33:51 -0700 Subject: [PATCH 1/2] Revert "upload-pack: Implement no-done capability" This reverts 3e63b21 (upload-pack: Implement no-done capability, 2011-03-14). Together with 761ecf0 (fetch-pack: Implement no-done capability, 2011-03-14) it seems to make the fetch-pack process out of sync and makes it keep talking long after upload-pack stopped listening to it, terminating the process with SIGPIPE. --- upload-pack.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/upload-pack.c b/upload-pack.c index 72aa661f8d..eb80dd9aad 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -27,7 +27,6 @@ static const char upload_pack_usage[] = "git upload-pack [--strict] [--timeout=< static unsigned long oldest_have; static int multi_ack, nr_our_refs; -static int no_done; static int use_thin_pack, use_ofs_delta, use_include_tag; static int no_progress, daemon_mode; static int shallow_nr; @@ -432,7 +431,6 @@ static int get_common_commits(void) char last_hex[41]; int got_common = 0; int got_other = 0; - int sent_ready = 0; save_commit_buffer = 0; @@ -442,17 +440,10 @@ static int get_common_commits(void) if (!len) { if (multi_ack == 2 && got_common - && !got_other && ok_to_give_up()) { - sent_ready = 1; + && !got_other && ok_to_give_up()) packet_write(1, "ACK %s ready\n", last_hex); - } if (have_obj.nr == 0 || multi_ack) packet_write(1, "NAK\n"); - - if (no_done && sent_ready) { - packet_write(1, "ACK %s\n", last_hex); - return 0; - } if (stateless_rpc) exit(0); got_common = 0; @@ -466,10 +457,9 @@ static int get_common_commits(void) got_other = 1; if (multi_ack && ok_to_give_up()) { const char *hex = sha1_to_hex(sha1); - if (multi_ack == 2) { - sent_ready = 1; + if (multi_ack == 2) packet_write(1, "ACK %s ready\n", hex); - } else + else packet_write(1, "ACK %s continue\n", hex); } break; @@ -545,8 +535,6 @@ static void receive_needs(void) multi_ack = 2; else if (strstr(line+45, "multi_ack")) multi_ack = 1; - if (strstr(line+45, "no-done")) - no_done = 1; if (strstr(line+45, "thin-pack")) use_thin_pack = 1; if (strstr(line+45, "ofs-delta")) @@ -640,7 +628,7 @@ static int send_ref(const char *refname, const unsigned char *sha1, int flag, vo { static const char *capabilities = "multi_ack thin-pack side-band" " side-band-64k ofs-delta shallow no-progress" - " include-tag multi_ack_detailed no-done"; + " include-tag multi_ack_detailed"; struct object *o = parse_object(sha1); if (!o) From 07514c83c2b7e6de926ef758905e3f43b4de6bfa Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 28 Mar 2011 23:35:39 -0700 Subject: [PATCH 2/2] Revert "fetch-pack: Implement no-done capability" This reverts commit 761ecf0bc7b6cddf311f00877c59e6381cdbdeea. --- builtin/fetch-pack.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index bf9990ce15..1724b76052 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -15,7 +15,6 @@ static int transfer_unpack_limit = -1; static int fetch_unpack_limit = -1; static int unpack_limit = 100; static int prefer_ofs_delta = 1; -static int no_done = 0; static struct fetch_pack_args args = { /* .uploadpack = */ "git-upload-pack", }; @@ -251,7 +250,6 @@ static int find_common(int fd[2], unsigned char *result_sha1, const unsigned char *sha1; unsigned in_vain = 0; int got_continue = 0; - int got_ready = 0; struct strbuf req_buf = STRBUF_INIT; size_t state_len = 0; @@ -290,7 +288,6 @@ static int find_common(int fd[2], unsigned char *result_sha1, struct strbuf c = STRBUF_INIT; if (multi_ack == 2) strbuf_addstr(&c, " multi_ack_detailed"); if (multi_ack == 1) strbuf_addstr(&c, " multi_ack"); - if (no_done) strbuf_addstr(&c, " no-done"); if (use_sideband == 2) strbuf_addstr(&c, " side-band-64k"); if (use_sideband == 1) strbuf_addstr(&c, " side-band"); if (args.use_thin_pack) strbuf_addstr(&c, " thin-pack"); @@ -409,10 +406,8 @@ static int find_common(int fd[2], unsigned char *result_sha1, retval = 0; in_vain = 0; got_continue = 1; - if (ack == ACK_ready) { + if (ack == ACK_ready) rev_list = NULL; - got_ready = 1; - } break; } } @@ -426,10 +421,8 @@ static int find_common(int fd[2], unsigned char *result_sha1, } } done: - if (!got_ready || !no_done) { - packet_buf_write(&req_buf, "done\n"); - send_request(fd[1], &req_buf); - } + packet_buf_write(&req_buf, "done\n"); + send_request(fd[1], &req_buf); if (args.verbose) fprintf(stderr, "done\n"); if (retval != 0) { @@ -732,11 +725,6 @@ static struct ref *do_fetch_pack(int fd[2], if (args.verbose) fprintf(stderr, "Server supports multi_ack_detailed\n"); multi_ack = 2; - if (server_supports("no-done")) { - if (args.verbose) - fprintf(stderr, "Server supports no-done\n"); - no_done = 1; - } } else if (server_supports("multi_ack")) { if (args.verbose)