X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Flive.cpp;h=0eb7f68f6af359d539425af2313ffd5e3f646b95;hb=fb743a64ba10738faa7960693bdbe0c054e4910e;hp=abbec8c20e89e02253a0dce83a38a138909b9dff;hpb=40a3f14a2c83923d06ae3a59bf8c00438290a877;p=lttng-tools.git 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);