receive-pack: log received client session ID
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Josh Steadmon committed
Nov 11, 2020 at 15:29 UTC
a2a066d96aeaa13fe9124b84978d333243aa17c9
2 files changed
+21
-6
builtin/receive-pack.c
+7
@@ -2039,6 +2039,7 @@ static struct command *read_head_info(struct packet_reader *reader,
2039
if (linelen < reader->pktlen) {
2040
const char *feature_list = reader->line + linelen + 1;
2041
const char *hash = NULL;
2042
+ const char *client_sid;
2043
int len = 0;
2044
if (parse_feature_request(feature_list, "report-status"))
2045
report_status = 1;
@@ -2061,6 +2062,12 @@ static struct command *read_head_info(struct packet_reader *reader,
2062
}
2063
if (xstrncmpz(the_hash_algo->name, hash, len))
2064
die("error: unsupported object format '%s'", hash);
2065
+ client_sid = parse_feature_value(feature_list, "session-id", &len, NULL);
2066
+ if (client_sid) {
2067
+ char *sid = xstrndup(client_sid, len);
2068
+ trace2_data_string("transfer", NULL, "client-sid", client_sid);
2069
+ free(sid);
2070
+ }
2071
}
2072
2073
if (!strcmp(reader->line, "push-cert")) {
t/t5705-session-id-in-capabilities.sh
+14
-6
@@ -28,13 +28,17 @@ do
28
'
29
30
test_expect_success "session IDs not advertised by default (push v${PROTO})" '
31
- test_when_finished "rm -rf local tr2-client-events" &&
31
+ test_when_finished "rm -rf local tr2-client-events tr2-server-events" &&
32
+ test_when_finished "git -C local push --delete origin new-branch" &&
33
cp -r "$LOCAL_PRISTINE" local &&
34
git -C local pull --no-rebase origin &&
35
GIT_TRACE2_EVENT_NESTING=5 \
36
GIT_TRACE2_EVENT="$(pwd)/tr2-client-events" \
36
- git -c protocol.version=$PROTO -C local push origin &&
37
- test -z "$(grep \"key\":\"server-sid\" tr2-client-events)"
37
+ git -c protocol.version=$PROTO -C local push \
38
+ --receive-pack "GIT_TRACE2_EVENT=\"$(pwd)/tr2-server-events\" git-receive-pack" \
39
+ origin HEAD:new-branch &&
40
+ test -z "$(grep \"key\":\"server-sid\" tr2-client-events)" &&
41
+ test -z "$(grep \"key\":\"client-sid\" tr2-server-events)"
42
'
43
done
44
@@ -57,13 +61,17 @@ do
61
'
62
63
test_expect_success "session IDs advertised (push v${PROTO})" '
60
- test_when_finished "rm -rf local tr2-client-events" &&
64
+ test_when_finished "rm -rf local tr2-client-events tr2-server-events" &&
65
+ test_when_finished "git -C local push --delete origin new-branch" &&
66
cp -r "$LOCAL_PRISTINE" local &&
67
git -C local pull --no-rebase origin &&
68
GIT_TRACE2_EVENT_NESTING=5 \
69
GIT_TRACE2_EVENT="$(pwd)/tr2-client-events" \
65
- git -c protocol.version=$PROTO -C local push origin &&
66
- grep \"key\":\"server-sid\" tr2-client-events
70
+ git -c protocol.version=$PROTO -C local push \
71
+ --receive-pack "GIT_TRACE2_EVENT=\"$(pwd)/tr2-server-events\" git-receive-pack" \
72
+ origin HEAD:new-branch &&
73
+ grep \"key\":\"server-sid\" tr2-client-events &&
74
+ grep \"key\":\"client-sid\" tr2-server-events
75
'
76
done
77