From: Jérémie Galarneau Date: Thu, 10 Mar 2022 22:46:31 +0000 (-0500) Subject: Fix: relayd: session id is ignored by 2.11+ create session command X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=d1bc11c3e8bbd032c6638a2def5994703e7c9778;p=deliverable%2Flttng-tools.git Fix: relayd: session id is ignored by 2.11+ create session command The id of the session used by the sessiond is not returned by cmd_create_session_2_11 and its caller sets the value in the relay_session to an uninitialized value. Up until recently this didn't have much effect as this uninitialized value was stored and used to perform look-ups in the trace chunk registry, which would work. However, the recent multi-consumer rotation fixes make this problem more significant as this 'id' is used as a key to join relay sessions originating from the same session daemon. This was discovered by enabling the '-Wunused-parameter' warning. Signed-off-by: Jérémie Galarneau Change-Id: I7e33f5f93dc46bb630c431408c9472be3a75c030 --- diff --git a/src/bin/lttng-relayd/cmd-2-11.cpp b/src/bin/lttng-relayd/cmd-2-11.cpp index aa97dd0f0..cef90fdc4 100644 --- a/src/bin/lttng-relayd/cmd-2-11.cpp +++ b/src/bin/lttng-relayd/cmd-2-11.cpp @@ -50,6 +50,7 @@ int cmd_create_session_2_11(const struct lttng_buffer_view *payload, header.current_chunk_id.value = be64toh(header.current_chunk_id.value); header.current_chunk_id.is_set = !!header.current_chunk_id.is_set; header.creation_time = be64toh(header.creation_time); + header.session_id = be64toh(header.session_id); lttng_uuid_copy(sessiond_uuid, header.sessiond_uuid); @@ -145,6 +146,7 @@ int cmd_create_session_2_11(const struct lttng_buffer_view *payload, *creation_time = (time_t) header.creation_time; *session_name_contains_creation_time = header.session_name_contains_creation_time; + *id_sessiond = header.session_id; ret = 0;