X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fclient.c;h=5e95a59f0fabf2c6874a01d276a7357945d137c2;hb=33b9609d08bf77e0afcb34d8d14b6fee44ffa0aa;hp=be907ebe38b6f877edf78c3bbbf574977f3b90a7;hpb=a4eb26f0f09cd6d031166329a7d5d7b5d40408a6;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/client.c b/src/bin/lttng-sessiond/client.c index be907ebe3..5e95a59f0 100644 --- a/src/bin/lttng-sessiond/client.c +++ b/src/bin/lttng-sessiond/client.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "client.h" @@ -716,6 +717,9 @@ static int process_client_msg(struct command_ctx *cmd_ctx, int *sock, int ret = LTTNG_OK; int need_tracing_session = 1; int need_domain; + struct lttng_dynamic_buffer payload; + + lttng_dynamic_buffer_init(&payload); DBG("Processing client command %d", cmd_ctx->lsm->cmd_type); @@ -1195,12 +1199,7 @@ error_add_context: } case LTTNG_ENABLE_CHANNEL: { - cmd_ctx->lsm->u.channel.chan.attr.extended.ptr = - (struct lttng_channel_extended *) &cmd_ctx->lsm->u.channel.extended; - ret = cmd_enable_channel(cmd_ctx->session, - ALIGNED_CONST_PTR(cmd_ctx->lsm->domain), - ALIGNED_CONST_PTR(cmd_ctx->lsm->u.channel.chan), - kernel_poll_pipe[1]); + ret = cmd_enable_channel(cmd_ctx, *sock, kernel_poll_pipe[1]); break; } case LTTNG_PROCESS_ATTR_TRACKER_ADD_INCLUDE_VALUE: @@ -1706,20 +1705,20 @@ error_add_context: } case LTTNG_LIST_CHANNELS: { - ssize_t payload_size; - struct lttng_channel *channels = NULL; + uint32_t nb_channel; + enum lttng_error_code ret_code; + struct lttcomm_list_command_header cmd_header = { 0 }; - payload_size = cmd_list_channels(cmd_ctx->lsm->domain.type, - cmd_ctx->session, &channels); - if (payload_size < 0) { - /* Return value is a negative lttng_error_code. */ - ret = -payload_size; + ret_code = cmd_list_channels(cmd_ctx->lsm->domain.type, + cmd_ctx->session, &payload, &nb_channel); + if (ret_code != LTTNG_OK) { + ret = (int) ret_code; goto error; } - ret = setup_lttng_msg_no_cmd_header(cmd_ctx, channels, - payload_size); - free(channels); + cmd_header.count = nb_channel; + ret = setup_lttng_msg(cmd_ctx, payload.data, payload.size, + &cmd_header, sizeof(cmd_header)); if (ret < 0) { goto setup_error; @@ -2108,6 +2107,7 @@ setup_error: } init_setup_error: assert(!rcu_read_ongoing()); + lttng_dynamic_buffer_reset(&payload); return ret; }