{
int ret;
char *cmd;
- struct ltt_session *sess;
+ struct ltt_session *sess, *stmp;
DBG("Cleaning up");
pthread_mutex_destroy(&session_list_ptr->lock);
/* Cleanup ALL session */
- cds_list_for_each_entry(sess, &session_list_ptr->head, list) {
+ cds_list_for_each_entry_safe(sess, stmp, &session_list_ptr->head, list) {
teardown_kernel_session(sess);
// TODO complete session cleanup (including UST)
}
/*
* Allocate a channel structure and fill it.
*/
-static struct lttng_channel *init_default_channel(void)
+static struct lttng_channel *init_default_channel(char *name)
{
struct lttng_channel *chan;
goto error;
}
- if (snprintf(chan->name, NAME_MAX, DEFAULT_CHANNEL_NAME) < 0) {
+ if (snprintf(chan->name, NAME_MAX, "%s", name) < 0) {
perror("snprintf defautl channel name");
return NULL;
}
if (no_event) {
ret = kernel_add_channel_context(chan, &ctx);
if (ret < 0) {
- continue;
+ ret = LTTCOMM_KERN_CONTEXT_FAIL;
+ goto error;
}
} else {
event = get_kernel_event_by_name(cmd_ctx->lsm->u.context.event_name, chan);
kchan = get_kernel_channel_by_name(channel_name,
cmd_ctx->session->kernel_session);
if (kchan == NULL) {
- DBG("Creating default channel");
+ DBG("Channel not found. Creating channel %s", channel_name);
- chan = init_default_channel();
+ chan = init_default_channel(channel_name);
if (chan == NULL) {
ret = LTTCOMM_FATAL;
goto error;
kchan = get_kernel_channel_by_name(channel_name,
cmd_ctx->session->kernel_session);
if (kchan == NULL) {
- DBG("Creating default channel");
+ DBG("Channel not found. Creating channel %s", channel_name);
- chan = init_default_channel();
+ chan = init_default_channel(channel_name);
if (chan == NULL) {
ret = LTTCOMM_FATAL;
goto error;
if (session_list_ptr->count == 0) {
ret = LTTCOMM_NO_SESSION;
+ unlock_session_list();
goto error;
}
ret = setup_lttng_msg(cmd_ctx, sizeof(struct lttng_session) *
session_list_ptr->count);
if (ret < 0) {
+ unlock_session_list();
goto setup_error;
}