remote-curl: reduce scope of rpc_state.result

The result field in struct rpc_state is only used in rpc_service(), and not in any functions it directly or indirectly calls. Refactor it to become an argument of rpc_service() instead. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jonathan Tan committed Feb 14, 2019 at 11:06 UTC b35903092e35cf249777ff14c1135c0b50f4e1f3
1 file changed +13 -12
remote-curl.c
+13 -12
@@ -516,7 +516,6 @@ struct rpc_state {
516 int in;
517 int out;
518 int any_written;
519 - struct strbuf result;
519 unsigned gzip_request : 1;
520 unsigned initial_buffer : 1;
521 };
@@ -828,7 +827,8 @@ retry:
827 }
828
829 static int rpc_service(struct rpc_state *rpc, struct discovery *heads,
831 - const char **client_argv, const struct strbuf *preamble)
830 + const char **client_argv, const struct strbuf *preamble,
831 + struct strbuf *rpc_result)
832 {
833 const char *svc = rpc->service_name;
834 struct strbuf buf = STRBUF_INIT;
@@ -849,7 +849,6 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads,
849 rpc->buf = xmalloc(rpc->alloc);
850 rpc->in = client.in;
851 rpc->out = client.out;
852 - strbuf_init(&rpc->result, 0);
852
853 strbuf_addf(&buf, "%s%s", url.buf, svc);
854 rpc->service_url = strbuf_detach(&buf, NULL);
@@ -877,7 +876,7 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads,
876 close(client.in);
877 client.in = -1;
878 if (!err) {
880 - strbuf_read(&rpc->result, client.out, 0);
879 + strbuf_read(rpc_result, client.out, 0);
880 } else {
881 char buf[4096];
882 for (;;)
@@ -930,6 +929,7 @@ static int fetch_git(struct discovery *heads,
929 struct strbuf preamble = STRBUF_INIT;
930 int i, err;
931 struct argv_array args = ARGV_ARRAY_INIT;
932 + struct strbuf rpc_result = STRBUF_INIT;
933
934 argv_array_pushl(&args, "fetch-pack", "--stateless-rpc",
935 "--stdin", "--lock-pack", NULL);
@@ -977,10 +977,10 @@ static int fetch_git(struct discovery *heads,
977 rpc.service_name = "git-upload-pack",
978 rpc.gzip_request = 1;
979
980 - err = rpc_service(&rpc, heads, args.argv, &preamble);
981 - if (rpc.result.len)
982 - write_or_die(1, rpc.result.buf, rpc.result.len);
983 - strbuf_release(&rpc.result);
980 + err = rpc_service(&rpc, heads, args.argv, &preamble, &rpc_result);
981 + if (rpc_result.len)
982 + write_or_die(1, rpc_result.buf, rpc_result.len);
983 + strbuf_release(&rpc_result);
984 strbuf_release(&preamble);
985 argv_array_clear(&args);
986 return err;
@@ -1075,6 +1075,7 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
1075 struct argv_array args;
1076 struct string_list_item *cas_option;
1077 struct strbuf preamble = STRBUF_INIT;
1078 + struct strbuf rpc_result = STRBUF_INIT;
1079
1080 argv_array_init(&args);
1081 argv_array_pushl(&args, "send-pack", "--stateless-rpc", "--helper-status",
@@ -1108,10 +1109,10 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
1109 memset(&rpc, 0, sizeof(rpc));
1110 rpc.service_name = "git-receive-pack",
1111
1111 - err = rpc_service(&rpc, heads, args.argv, &preamble);
1112 - if (rpc.result.len)
1113 - write_or_die(1, rpc.result.buf, rpc.result.len);
1114 - strbuf_release(&rpc.result);
1112 + err = rpc_service(&rpc, heads, args.argv, &preamble, &rpc_result);
1113 + if (rpc_result.len)
1114 + write_or_die(1, rpc_result.buf, rpc_result.len);
1115 + strbuf_release(&rpc_result);
1116 strbuf_release(&preamble);
1117 argv_array_clear(&args);
1118 return err;