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.
*/
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);