[PATCH 05/10] serve: advertise trace2 SID in v2 capabilities
- From
Josh Steadmon <steadmon@google.com>
- Date
- Oct 29, 2020, 21:32 UTC
- Message-ID
- <ff80f70d33c394b251b7baeae13bc5aab34ba16f.1604006121.git.steadmon@google.com>
- In-Reply-To
- <cover.1604006121.git.steadmon@google.com>
When trace2 is enabled and trace2.advertiseSID is true, advertise the server's trace2 session ID for all protocol v2 connections via the new trace2-sid capability.
Signed-off-by: Josh Steadmon <steadmon@google.com> --- serve.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/serve.c b/serve.c index f6341206c4..6ad73d69ab 100644 --- a/serve.c +++ b/serve.c @@ -7,6 +7,9 @@ #include "ls-refs.h" #include "serve.h" #include "upload-pack.h" +#include "trace2/tr2_sid.h" + +static int advertise_trace2_sid; static int always_advertise(struct repository *r, struct strbuf *value) @@ -30,6 +33,15 @@ static int object_format_advertise(struct repository *r, return 1; } +static int trace2_advertise(struct repository *r, struct strbuf *value) +{ + if (!advertise_trace2_sid || !trace2_is_enabled()) + return 0; + if (value) + strbuf_addstr(value, tr2_sid_get()); + return 1; +} + struct protocol_capability { /* * The name of the capability. The server uses this name when @@ -66,6 +78,7 @@ static struct protocol_capability capabilities[] = { { "fetch", upload_pack_advertise, upload_pack_v2 }, { "server-option", always_advertise, NULL }, { "object-format", object_format_advertise, NULL }, + { "trace2-sid", trace2_advertise, NULL }, }; static void advertise_capabilities(void) @@ -261,6 +274,8 @@ static int process_request(void) /* Main serve loop for protocol version 2 */ void serve(struct serve_options *options) { + git_config_get_bool("trace2.advertisesid", &advertise_trace2_sid); + if (options->advertise_capabilities || !options->stateless_rpc) { /* serve by default supports v2 */ packet_write_fmt(1, "version 2\n");
-- 2.29.1.341.ge80a0c044ae-goog