X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fkernel-consumer.c;h=f634cd362a74fd810622d8d49c28397c137b4a27;hp=4153612746f90c84780b208b94ce2ce731126217;hb=6c1c0768320135c6936c371b09731851b508c023;hpb=601262d65a9ccd90198558639ef2a73cda4230e1 diff --git a/src/bin/lttng-sessiond/kernel-consumer.c b/src/bin/lttng-sessiond/kernel-consumer.c index 415361274..f634cd362 100644 --- a/src/bin/lttng-sessiond/kernel-consumer.c +++ b/src/bin/lttng-sessiond/kernel-consumer.c @@ -16,6 +16,7 @@ */ #define _GNU_SOURCE +#define _LGPL_SOURCE #include #include #include @@ -105,7 +106,7 @@ int kernel_consumer_add_channel(struct consumer_socket *sock, } } else { /* Empty path. */ - pathname = ""; + pathname = strdup(""); } /* Prep channel message structure */ @@ -136,6 +137,7 @@ int kernel_consumer_add_channel(struct consumer_socket *sock, health_code_update(); error: + free(pathname); return ret; } @@ -168,7 +170,7 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock, } } else { /* Empty path. */ - pathname = ""; + pathname = strdup(""); } /* Prep channel message structure */ @@ -215,6 +217,7 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock, health_code_update(); error: + free(pathname); return ret; } @@ -371,14 +374,11 @@ int kernel_consumer_send_session(struct consumer_socket *sock, DBG("Sending session stream to kernel consumer"); - if (session->metadata_stream_fd >= 0) { + if (session->metadata_stream_fd >= 0 && session->metadata) { ret = kernel_consumer_add_metadata(sock, session, monitor); if (ret < 0) { goto error; } - - /* Flag that at least the metadata has been sent to the consumer. */ - session->consumer_fds_sent = 1; } /* Send channel and streams of it */ @@ -402,6 +402,7 @@ int kernel_consumer_send_session(struct consumer_socket *sock, DBG("Kernel consumer FDs of metadata and channel streams sent"); + session->consumer_fds_sent = 1; return 0; error: @@ -419,6 +420,7 @@ int kernel_consumer_destroy_channel(struct consumer_socket *socket, DBG("Sending kernel consumer destroy channel key %d", channel->fd); + memset(&msg, 0, sizeof(msg)); msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL; msg.u.destroy_channel.key = channel->fd; @@ -447,6 +449,7 @@ int kernel_consumer_destroy_metadata(struct consumer_socket *socket, DBG("Sending kernel consumer destroy channel key %d", metadata->fd); + memset(&msg, 0, sizeof(msg)); msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL; msg.u.destroy_channel.key = metadata->fd;