X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fsession.c;h=0a535cf877b581945260266f117cab69071f751d;hb=8aeeba8f5a90c8352ec9826f564cb47e164e0e9a;hp=f40f70965c97d6a1ceffdf85a066a7a282dd1d1c;hpb=19efdf659e29ec34a27c304ccbf7ad6ff8e26337;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/session.c b/src/bin/lttng-relayd/session.c index f40f70965..0a535cf87 100644 --- a/src/bin/lttng-relayd/session.c +++ b/src/bin/lttng-relayd/session.c @@ -220,6 +220,7 @@ static int session_set_anonymous_chunk(struct relay_session *session) goto end; } + lttng_trace_chunk_set_fd_tracker(chunk, the_fd_tracker); status = lttng_trace_chunk_set_credentials_current_user(chunk); if (status != LTTNG_TRACE_CHUNK_STATUS_OK) { ret = -1; @@ -232,8 +233,6 @@ static int session_set_anonymous_chunk(struct relay_session *session) goto end; } - lttng_trace_chunk_set_fd_tracker(chunk, the_fd_tracker); - output_directory = NULL; session->current_trace_chunk = chunk; chunk = NULL; end: @@ -293,9 +292,9 @@ struct relay_session *session_create(const char *session_name, int ret; struct relay_session *session = NULL; - assert(session_name); - assert(hostname); - assert(base_path); + LTTNG_ASSERT(session_name); + LTTNG_ASSERT(hostname); + LTTNG_ASSERT(base_path); if (!is_name_path_safe(session_name)) { ERR("Refusing to create session as the provided session name is not path-safe"); @@ -329,7 +328,7 @@ struct relay_session *session_create(const char *session_name, if (lttng_strncpy(session->session_name, session_name, sizeof(session->session_name))) { - WARN("Session name exceeds maximal allowed length"); + WARN("Session name exceeds maximal allowed length"); goto error; } if (lttng_strncpy(session->hostname, hostname, @@ -344,6 +343,12 @@ struct relay_session *session_create(const char *session_name, } if (creation_time) { LTTNG_OPTIONAL_SET(&session->creation_time, *creation_time); + } else { + LTTNG_OPTIONAL_SET(&session->creation_time, time(NULL)); + if (session->creation_time.value == (time_t) -1) { + PERROR("Failed to sample session creation time"); + goto error; + } } session->session_name_contains_creation_time = session_name_contains_creation_time; @@ -389,14 +394,14 @@ struct relay_session *session_create(const char *session_name, session->id_sessiond.value, *current_chunk_id); if (!session->current_trace_chunk) { - char uuid_str[LTTNG_UUID_STR_LEN]; + char uuid_str[LTTNG_UUID_STR_LEN]; lttng_uuid_to_str(sessiond_uuid, uuid_str); ERR("Could not find trace chunk: sessiond = {%s}, sessiond session id = %" PRIu64 ", trace chunk id = %" PRIu64, uuid_str, *id_sessiond, *current_chunk_id); goto error; - } + } chunk_status = lttng_trace_chunk_get_session_output_directory_handle( session->current_trace_chunk, @@ -405,7 +410,7 @@ struct relay_session *session_create(const char *session_name, goto error; } - assert(session_output_directory); + LTTNG_ASSERT(session_output_directory); session->output_directory = session_output_directory; } else if (!id_sessiond) { /* @@ -504,14 +509,14 @@ static void destroy_session(struct relay_session *session) int ret; ret = session_delete(session); - assert(!ret); + LTTNG_ASSERT(!ret); lttng_trace_chunk_put(session->current_trace_chunk); session->current_trace_chunk = NULL; lttng_trace_chunk_put(session->pending_closure_trace_chunk); session->pending_closure_trace_chunk = NULL; ret = sessiond_trace_chunk_registry_session_destroyed( sessiond_trace_chunk_registry, session->sessiond_uuid); - assert(!ret); + LTTNG_ASSERT(!ret); lttng_directory_handle_put(session->output_directory); session->output_directory = NULL; call_rcu(&session->rcu_node, rcu_destroy_session);