Assert on unknown UST buffer type
[lttng-tools.git] / src / bin / lttng-sessiond / main.c
index 545f456e912f6a62bb76cc265350dc9369a7e3e1..65f598b602fbe92830a7f62595bfd495a881634a 100644 (file)
@@ -899,12 +899,16 @@ static int setup_lttng_msg(struct command_ctx *cmd_ctx,
        cmd_ctx->lttng_msg_size = total_msg_size;
 
        /* Copy command header */
-       memcpy(((uint8_t *) cmd_ctx->llm) + cmd_header_offset, cmd_header_buf,
-               cmd_header_len);
+       if (cmd_header_len) {
+               memcpy(((uint8_t *) cmd_ctx->llm) + cmd_header_offset, cmd_header_buf,
+                       cmd_header_len);
+       }
 
        /* Copy payload */
-       memcpy(((uint8_t *) cmd_ctx->llm) + payload_offset, payload_buf,
-               payload_len);
+       if (payload_len) {
+               memcpy(((uint8_t *) cmd_ctx->llm) + payload_offset, payload_buf,
+                       payload_len);
+       }
 
 end:
        return ret;
@@ -3035,6 +3039,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx, int sock,
        case LTTNG_SNAPSHOT_RECORD:
        case LTTNG_SAVE_SESSION:
        case LTTNG_SET_SESSION_SHM_PATH:
+       case LTTNG_METADATA_REGENERATE:
                need_domain = 0;
                break;
        default:
@@ -3840,19 +3845,19 @@ error_add_context:
        }
        case LTTNG_LIST_CHANNELS:
        {
-               int nb_chan;
+               ssize_t payload_size;
                struct lttng_channel *channels = NULL;
 
-               nb_chan = cmd_list_channels(cmd_ctx->lsm->domain.type,
+               payload_size = cmd_list_channels(cmd_ctx->lsm->domain.type,
                                cmd_ctx->session, &channels);
-               if (nb_chan < 0) {
+               if (payload_size < 0) {
                        /* Return value is a negative lttng_error_code. */
-                       ret = -nb_chan;
+                       ret = -payload_size;
                        goto error;
                }
 
                ret = setup_lttng_msg_no_cmd_header(cmd_ctx, channels,
-                       nb_chan * sizeof(struct lttng_channel));
+                       payload_size);
                free(channels);
 
                if (ret < 0) {
@@ -3866,17 +3871,24 @@ error_add_context:
        {
                ssize_t nb_event;
                struct lttng_event *events = NULL;
+               struct lttcomm_event_command_header cmd_header;
+               size_t total_size;
+
+               memset(&cmd_header, 0, sizeof(cmd_header));
+               /* Extended infos are included at the end of events */
+               nb_event = cmd_list_events(cmd_ctx->lsm->domain.type,
+                       cmd_ctx->session, cmd_ctx->lsm->u.list.channel_name,
+                       &events, &total_size);
 
-               nb_event = cmd_list_events(cmd_ctx->lsm->domain.type, cmd_ctx->session,
-                               cmd_ctx->lsm->u.list.channel_name, &events);
                if (nb_event < 0) {
                        /* Return value is a negative lttng_error_code. */
                        ret = -nb_event;
                        goto error;
                }
 
-               ret = setup_lttng_msg_no_cmd_header(cmd_ctx, events,
-                       nb_event * sizeof(struct lttng_event));
+               cmd_header.nb_events = nb_event;
+               ret = setup_lttng_msg(cmd_ctx, events, total_size,
+                       &cmd_header, sizeof(cmd_header));
                free(events);
 
                if (ret < 0) {
@@ -4132,6 +4144,11 @@ error_add_context:
                                cmd_ctx->lsm->u.set_shm_path.shm_path);
                break;
        }
+       case LTTNG_METADATA_REGENERATE:
+       {
+               ret = cmd_metadata_regenerate(cmd_ctx->session);
+               break;
+       }
        default:
                ret = LTTNG_ERR_UND;
                break;
This page took 0.025285 seconds and 4 git commands to generate.