@@ -516,7 +516,6 @@ struct rpc_state {
516516 int in ;
517517 int out ;
518518 int any_written ;
519- struct strbuf result ;
520519 unsigned gzip_request : 1 ;
521520 unsigned initial_buffer : 1 ;
522521};
@@ -828,7 +827,8 @@ static int post_rpc(struct rpc_state *rpc)
828827}
829828
830829static 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 )
832832{
833833 const char * svc = rpc -> service_name ;
834834 struct strbuf buf = STRBUF_INIT ;
@@ -849,7 +849,6 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads,
849849 rpc -> buf = xmalloc (rpc -> alloc );
850850 rpc -> in = client .in ;
851851 rpc -> out = client .out ;
852- strbuf_init (& rpc -> result , 0 );
853852
854853 strbuf_addf (& buf , "%s%s" , url .buf , svc );
855854 rpc -> service_url = strbuf_detach (& buf , NULL );
@@ -877,7 +876,7 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads,
877876 close (client .in );
878877 client .in = -1 ;
879878 if (!err ) {
880- strbuf_read (& rpc -> result , client .out , 0 );
879+ strbuf_read (rpc_result , client .out , 0 );
881880 } else {
882881 char buf [4096 ];
883882 for (;;)
@@ -930,6 +929,7 @@ static int fetch_git(struct discovery *heads,
930929 struct strbuf preamble = STRBUF_INIT ;
931930 int i , err ;
932931 struct argv_array args = ARGV_ARRAY_INIT ;
932+ struct strbuf rpc_result = STRBUF_INIT ;
933933
934934 argv_array_pushl (& args , "fetch-pack" , "--stateless-rpc" ,
935935 "--stdin" , "--lock-pack" , NULL );
@@ -977,10 +977,10 @@ static int fetch_git(struct discovery *heads,
977977 rpc .service_name = "git-upload-pack" ,
978978 rpc .gzip_request = 1 ;
979979
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 );
984984 strbuf_release (& preamble );
985985 argv_array_clear (& args );
986986 return err ;
@@ -1075,6 +1075,7 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
10751075 struct argv_array args ;
10761076 struct string_list_item * cas_option ;
10771077 struct strbuf preamble = STRBUF_INIT ;
1078+ struct strbuf rpc_result = STRBUF_INIT ;
10781079
10791080 argv_array_init (& args );
10801081 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)
11081109 memset (& rpc , 0 , sizeof (rpc ));
11091110 rpc .service_name = "git-receive-pack" ,
11101111
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 );
11151116 strbuf_release (& preamble );
11161117 argv_array_clear (& args );
11171118 return err ;
0 commit comments