Signed-off-by: Jonathan Rajotte <jonathan.rajotte-jul...@efficios.com> ---
Feel free to squash this into the previous commit. --- src/bin/lttng-sessiond/cmd.c | 64 +++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index 1dec61ea1..3ee390698 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -2739,6 +2739,42 @@ error: return ret; } +/* + * Set the base_path of the session only if subdir of a control uris is set. + * Return LTTNG_OK on success, otherwise LTTNG_ERR_*. + */ +static int set_session_base_path_from_uris(struct ltt_session *session, + size_t nb_uri, + struct lttng_uri *uris) +{ + int ret; + for (int i = 0; i < nb_uri; i++) { + if (uris[i].stype != LTTNG_STREAM_CONTROL || + uris[i].subdir[0] == '\0') { + /* Not interested in these URIs */ + continue; + } + + if (session->base_path != NULL) { + free(session->base_path); + session->base_path = NULL; + } + + /* Set session base_path */ + session->base_path = strdup(uris[i].subdir); + if (!session->base_path) { + PERROR("Copying base path: %s", uris[i].subdir); + ret = LTTNG_ERR_NOMEM; + goto error; + } + DBG2("Setting base path for session %" PRIu64 ": %s", + session->id, session->base_path); + } + ret = LTTNG_OK; +error: + return ret; +} + /* * Command LTTNG_SET_CONSUMER_URI processed by the client thread. */ @@ -2759,26 +2795,14 @@ int cmd_set_consumer_uri(struct ltt_session *session, size_t nb_uri, goto error; } - for (i = 0; i < nb_uri; i++) { - if (uris[i].stype != LTTNG_STREAM_CONTROL || - uris[i].subdir[0] == '\0') { - /* Not interested in these URIs */ - continue; - } - - if (session->base_path != NULL) { - free(session->base_path); - session->base_path = NULL; - } - - /* Set session base_path */ - session->base_path = strdup(uris[i].subdir); - if (!session->base_path) { - PERROR("Copying base path: %s", uris[i].subdir); - goto error; - } - DBG2("Setting base path for session %" PRIu64 ": %s", - session->id, session->base_path); + /* + * Set the session base path if any. This is done inside + * cmd_set_consumer_uri to preserve backward compatibility of the + * previous session creation api vs the session descriptor api. + */ + ret = set_session_base_path_from_uris(session, nb_uri, uris); + if (ret != LTTNG_OK) { + goto error; } /* Set the "global" consumer URIs */ -- 2.17.1 _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev