git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 11/11] receive-pack: log received client session ID

From
Josh Steadmon <steadmon@google.com>
Date
Nov 11, 2020, 23:29 UTC
Message-ID
<ea2a318f2bd46115f5eb76426e6546a325a1b62e.1605136908.git.steadmon@google.com>
In-Reply-To
<cover.1605136908.git.steadmon@google.com>

When receive-pack receives a session-id capability from the client, log the received session ID via a trace2 data event.

Signed-off-by: Josh Steadmon <steadmon@google.com>
---
 builtin/receive-pack.c                |  7 +++++++
 t/t5705-session-id-in-capabilities.sh | 20 ++++++++++++++------
 2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 6ed498b6c7..deb5f859a9 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -2039,6 +2039,7 @@ static struct command *read_head_info(struct packet_reader *reader,
 		if (linelen < reader->pktlen) {
 			const char *feature_list = reader->line + linelen + 1;
 			const char *hash = NULL;
+			const char *client_sid;
 			int len = 0;
 			if (parse_feature_request(feature_list, "report-status"))
 				report_status = 1;
@@ -2061,6 +2062,12 @@ static struct command *read_head_info(struct packet_reader *reader,
 			}
 			if (xstrncmpz(the_hash_algo->name, hash, len))
 				die("error: unsupported object format '%s'", hash);
+			client_sid = parse_feature_value(feature_list, "session-id", &len, NULL);
+			if (client_sid) {
+				char *sid = xstrndup(client_sid, len);
+				trace2_data_string("transfer", NULL, "client-sid", client_sid);
+				free(sid);
+			}
 		}
 
 		if (!strcmp(reader->line, "push-cert")) {
diff --git a/t/t5705-session-id-in-capabilities.sh b/t/t5705-session-id-in-capabilities.sh
index afa2159657..f1d189d5bc 100755
--- a/t/t5705-session-id-in-capabilities.sh
+++ b/t/t5705-session-id-in-capabilities.sh
@@ -28,13 +28,17 @@ do
 	'
 
 	test_expect_success "session IDs not advertised by default (push v${PROTO})" '
-		test_when_finished "rm -rf local tr2-client-events" &&
+		test_when_finished "rm -rf local tr2-client-events tr2-server-events" &&
+		test_when_finished "git -C local push --delete origin new-branch" &&
 		cp -r "$LOCAL_PRISTINE" local &&
 		git -C local pull --no-rebase origin &&
 		GIT_TRACE2_EVENT_NESTING=5 \
 		GIT_TRACE2_EVENT="$(pwd)/tr2-client-events" \
-		git -c protocol.version=$PROTO -C local push origin &&
-		test -z "$(grep \"key\":\"server-sid\" tr2-client-events)"
+		git -c protocol.version=$PROTO -C local push \
+			--receive-pack "GIT_TRACE2_EVENT=\"$(pwd)/tr2-server-events\" git-receive-pack" \
+			origin HEAD:new-branch &&
+		test -z "$(grep \"key\":\"server-sid\" tr2-client-events)" &&
+		test -z "$(grep \"key\":\"client-sid\" tr2-server-events)"
 	'
 done
 
@@ -57,13 +61,17 @@ do
 	'
 
 	test_expect_success "session IDs advertised (push v${PROTO})" '
-		test_when_finished "rm -rf local tr2-client-events" &&
+		test_when_finished "rm -rf local tr2-client-events tr2-server-events" &&
+		test_when_finished "git -C local push --delete origin new-branch" &&
 		cp -r "$LOCAL_PRISTINE" local &&
 		git -C local pull --no-rebase origin &&
 		GIT_TRACE2_EVENT_NESTING=5 \
 		GIT_TRACE2_EVENT="$(pwd)/tr2-client-events" \
-		git -c protocol.version=$PROTO -C local push origin &&
-		grep \"key\":\"server-sid\" tr2-client-events
+		git -c protocol.version=$PROTO -C local push \
+			--receive-pack "GIT_TRACE2_EVENT=\"$(pwd)/tr2-server-events\" git-receive-pack" \
+			origin HEAD:new-branch &&
+		grep \"key\":\"server-sid\" tr2-client-events &&
+		grep \"key\":\"client-sid\" tr2-server-events
 	'
 done
 
-- 
2.29.2.222.g5d2a92d10f8-goog
Previous: Josh SteadmonNext: Josh Steadmon
Message 59 of 66 in “Advertise trace2 SID in protocol capabilities”
  1. 00/10 Advertise trace2 SID in protocol capabilitiesJosh Steadmon, Oct 29, 2020
  2. 01/10 docs: new capability to advertise trace2 SIDsJosh Steadmon, Oct 29, 2020
  3. 02/10 docs: new trace2.advertiseSID optionJosh Steadmon, Oct 29, 2020
  4. 03/10 upload-pack: advertise trace2 SID in v0 capabilitiesJosh Steadmon, Oct 29, 2020
  5. 05/10 serve: advertise trace2 SID in v2 capabilitiesJosh Steadmon, Oct 29, 2020
  6. 04/10 receive-pack: advertise trace2 SID in v0 capabilitiesJosh Steadmon, Oct 29, 2020
  7. 06/10 transport: log received server trace2 SIDJosh Steadmon, Oct 29, 2020
  8. 07/10 fetch-pack: advertise trace2 SID in capabilitiesJosh Steadmon, Oct 29, 2020
  9. 08/10 upload-pack, serve: log received client trace2 SIDJosh Steadmon, Oct 29, 2020
  10. 09/10 send-pack: advertise trace2 SID in capabilitiesJosh Steadmon, Oct 29, 2020
  11. 10/10 receive-pack: log received client trace2 SIDJosh Steadmon, Oct 29, 2020
  12. Jeff HostetlerOct 30, 2020
  13. Josh SteadmonNov 2, 2020
  14. Junio C HamanoNov 3, 2020
  15. Jeff HostetlerNov 5, 2020
  16. Josh SteadmonNov 10, 2020
  17. Junio C HamanoOct 30, 2020
  18. 00/11 Advertise trace2 SID in protocol capabilitiesJosh Steadmon, Nov 2, 2020
  19. 02/11 docs: new trace2.advertiseSID optionJosh Steadmon, Nov 2, 2020
  20. Junio C HamanoNov 3, 2020
  21. Josh SteadmonNov 5, 2020
  22. Junio C HamanoNov 5, 2020
  23. Johannes SchindelinNov 6, 2020
  24. 01/11 docs: new capability to advertise trace2 SIDsJosh Steadmon, Nov 2, 2020
  25. Junio C HamanoNov 3, 2020
  26. Jeff HostetlerNov 5, 2020
  27. Ævar Arnfjörð BjarmasonNov 12, 2020
  28. Junio C HamanoNov 12, 2020
  29. Jeff HostetlerNov 12, 2020
  30. Josh SteadmonNov 11, 2020
  31. 03/11 trace2: add a public function for getting the SIDJosh Steadmon, Nov 2, 2020
  32. 05/11 receive-pack: advertise trace2 SID in v0 capabilitiesJosh Steadmon, Nov 2, 2020
  33. 04/11 upload-pack: advertise trace2 SID in v0 capabilitiesJosh Steadmon, Nov 2, 2020
  34. Junio C HamanoNov 3, 2020
  35. Josh SteadmonNov 5, 2020
  36. 06/11 serve: advertise trace2 SID in v2 capabilitiesJosh Steadmon, Nov 2, 2020
  37. Junio C HamanoNov 4, 2020
  38. 07/11 transport: log received server trace2 SIDJosh Steadmon, Nov 2, 2020
  39. Junio C HamanoNov 4, 2020
  40. Josh SteadmonNov 11, 2020
  41. Jeff HostetlerNov 12, 2020
  42. 08/11 fetch-pack: advertise trace2 SID in capabilitiesJosh Steadmon, Nov 2, 2020
  43. Junio C HamanoNov 4, 2020
  44. Josh SteadmonNov 5, 2020
  45. Junio C HamanoNov 5, 2020
  46. Josh SteadmonNov 11, 2020
  47. 09/11 upload-pack, serve: log received client trace2 SIDJosh Steadmon, Nov 2, 2020
  48. Junio C HamanoNov 4, 2020
  49. Josh SteadmonNov 5, 2020
  50. 10/11 send-pack: advertise trace2 SID in capabilitiesJosh Steadmon, Nov 2, 2020
  51. 11/11 receive-pack: log received client trace2 SIDJosh Steadmon, Nov 2, 2020
  52. Junio C HamanoNov 3, 2020
  53. 00/11 Advertise session ID in protocol capabilitiesJosh Steadmon, Nov 11, 2020
  54. 06/11 serve: advertise session ID in v2 capabilitiesJosh Steadmon, Nov 11, 2020
  55. 08/11 fetch-pack: advertise session ID in capabilitiesJosh Steadmon, Nov 11, 2020
  56. 07/11 transport: log received server session IDJosh Steadmon, Nov 11, 2020
  57. 10/11 send-pack: advertise session ID in capabilitiesJosh Steadmon, Nov 11, 2020
  58. 09/11 upload-pack, serve: log received client session IDJosh Steadmon, Nov 11, 2020
  59. 11/11 receive-pack: log received client session IDJosh Steadmon, Nov 11, 2020
  60. 05/11 receive-pack: advertise session ID in v0 capabilitiesJosh Steadmon, Nov 11, 2020
  61. 04/11 upload-pack: advertise session ID in v0 capabilitiesJosh Steadmon, Nov 11, 2020
  62. 03/11 trace2: add a public function for getting the SIDJosh Steadmon, Nov 11, 2020
  63. 02/11 docs: new transfer.advertiseSID optionJosh Steadmon, Nov 11, 2020
  64. 01/11 docs: new capability to advertise session IDsJosh Steadmon, Nov 11, 2020
  65. Junio C HamanoNov 25, 2020
  66. Josh SteadmonNov 25, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.