X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fsession.c;h=ae83e45aec1b7610992772d48b35615a8adb1ba1;hp=b13f4a916c8963357cea305d4677649a7f955f05;hb=271933a4d7438f73f1487842bb18b2442ceaec48;hpb=5f822d0a2688bb0b085b579dfc37a1958fff072e diff --git a/ltt-sessiond/session.c b/ltt-sessiond/session.c index b13f4a916..ae83e45ae 100644 --- a/ltt-sessiond/session.c +++ b/ltt-sessiond/session.c @@ -144,23 +144,20 @@ struct ltt_session *session_find_by_name(char *name) * * Return -1 if no session is found. On success, return 1; */ -int session_destroy(char *name) +int session_destroy(struct ltt_session *session) { - struct ltt_session *iter, *tmp; - - session_lock_list(); - cds_list_for_each_entry_safe(iter, tmp, <t_session_list.head, list) { - if (strcmp(iter->name, name) == 0) { - DBG("Destroying session %s", iter->name); - del_session_list(iter); - free(iter->name); - free(iter->path); - pthread_mutex_destroy(&iter->lock); - free(iter); - break; - } + /* Safety check */ + if (session == NULL) { + ERR("Session pointer was null on session destroy"); + return LTTCOMM_OK; } - session_unlock_list(); + + DBG("Destroying session %s", session->name); + del_session_list(session); + free(session->name); + free(session->path); + pthread_mutex_destroy(&session->lock); + free(session); return LTTCOMM_OK; }