From fb743a64ba10738faa7960693bdbe0c054e4910e Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Fri, 20 May 2022 15:49:37 -0400 Subject: [PATCH] Live: viewer: check trace format support based on protocol. Signed-off-by: Jonathan Rajotte Change-Id: Ia73157ba3e72c821c3da19537e093c2c11490914 --- src/bin/lttng-relayd/live.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/bin/lttng-relayd/live.cpp b/src/bin/lttng-relayd/live.cpp index abbec8c20..0eb7f68f6 100644 --- a/src/bin/lttng-relayd/live.cpp +++ b/src/bin/lttng-relayd/live.cpp @@ -1328,6 +1328,24 @@ error: return ret; } +static bool viewer_supports_trace_format( + const relay_connection *connection, const relay_session *session) +{ + LTTNG_ASSERT(connection); + LTTNG_ASSERT(session); + + switch (session->trace_format) { + case RELAYD_TRACE_FORMAT_CTF_1: + return true; + case RELAYD_TRACE_FORMAT_CTF_2: + /* Introduced in protocol version 2.15 */ + return connection->minor >= 15; + default: + abort(); + break; + } +} + /* * Send the viewer the list of current sessions. */ @@ -1387,6 +1405,15 @@ int viewer_attach_session(struct relay_connection *conn) goto send_reply; } + if (!viewer_supports_trace_format(conn, session)) { + viewer_attach_status = LTTNG_VIEWER_ATTACH_NOT_LIVE; + DBG("Relay session ID %" PRIu64 + " trace format is not supported by the viewer, returning status=%s", + session_id, + lttng_viewer_attach_return_code_str(viewer_attach_status)); + goto send_reply; + } + send_streams = 1; viewer_attach_status = viewer_session_attach(conn->viewer_session, session); -- 2.34.1