diff --git a/connect.c b/connect.c index afc79a6236..e6d0b1d34b 100644 --- a/connect.c +++ b/connect.c @@ -473,22 +473,9 @@ void check_stateless_delimiter(int stateless_rpc, die("%s", error); } -struct ref **get_remote_refs(int fd_out, struct packet_reader *reader, - struct ref **list, int for_push, - struct transport_ls_refs_options *transport_options, - const struct string_list *server_options, - int stateless_rpc) +static void send_capabilities(int fd_out, struct packet_reader *reader) { - int i; const char *hash_name; - struct strvec *ref_prefixes = transport_options ? - &transport_options->ref_prefixes : NULL; - const char **unborn_head_target = transport_options ? - &transport_options->unborn_head_target : NULL; - *list = NULL; - - if (server_supports_v2("ls-refs", 1)) - packet_write_fmt(fd_out, "command=ls-refs\n"); if (server_supports_v2("agent", 0)) packet_write_fmt(fd_out, "agent=%s", git_user_agent_sanitized()); @@ -502,6 +489,26 @@ struct ref **get_remote_refs(int fd_out, struct packet_reader *reader, } else { reader->hash_algo = &hash_algos[GIT_HASH_SHA1]; } +} + +struct ref **get_remote_refs(int fd_out, struct packet_reader *reader, + struct ref **list, int for_push, + struct transport_ls_refs_options *transport_options, + const struct string_list *server_options, + int stateless_rpc) +{ + int i; + struct strvec *ref_prefixes = transport_options ? + &transport_options->ref_prefixes : NULL; + const char **unborn_head_target = transport_options ? + &transport_options->unborn_head_target : NULL; + *list = NULL; + + if (server_supports_v2("ls-refs", 1)) + packet_write_fmt(fd_out, "command=ls-refs\n"); + + /* Send capabilities */ + send_capabilities(fd_out, reader); if (server_options && server_options->nr && server_supports_v2("server-option", 1))