X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=liblttngkconsumerd%2Flttngkconsumerd.c;h=1893e0ae66a2f110150b7e6aa219d32771c0b0c6;hp=78291d56bff917d138ad1a84240744a6a477efc8;hb=26d988bc6ff8b009808219710e7970d7627b8ff6;hpb=1e307fab325060d9db4e989c0fdc3cddf46f50f6 diff --git a/liblttngkconsumerd/lttngkconsumerd.c b/liblttngkconsumerd/lttngkconsumerd.c index 78291d56b..1893e0ae6 100644 --- a/liblttngkconsumerd/lttngkconsumerd.c +++ b/liblttngkconsumerd/lttngkconsumerd.c @@ -245,12 +245,16 @@ static int kconsumerd_consumerd_recv_fd( enum lttng_kconsumerd_command cmd_type) { struct iovec iov[1]; - int ret = 0, i, tmp2; + int ret = 0, i, j, tmp2; struct cmsghdr *cmsg; int nb_fd; char recv_fd[CMSG_SPACE(sizeof(int))]; struct lttcomm_kconsumerd_msg lkm; struct lttng_kconsumerd_fd *new_fd; + union { + unsigned char vc[4]; + int vi; + } tmp; /* the number of fds we are about to receive */ nb_fd = size / sizeof(struct lttcomm_kconsumerd_msg); @@ -298,10 +302,10 @@ static int kconsumerd_consumerd_recv_fd( if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { switch (cmd_type) { case ADD_STREAM: - DBG("kconsumerd_add_fd %s (%d)", lkm.path_name, - ((int *) CMSG_DATA(cmsg))[0]); - - new_fd = kconsumerd_allocate_fd(&lkm, ((int *) CMSG_DATA(cmsg))[0]); + for (j = 0; j < sizeof(int); j++) + tmp.vc[j] = CMSG_DATA(cmsg)[j]; + DBG("kconsumerd_add_fd %s (%d)", lkm.path_name, tmp.vi); + new_fd = kconsumerd_allocate_fd(&lkm, tmp.vi); if (new_fd == NULL) { lttng_kconsumerd_send_error(ctx, KCONSUMERD_OUTFD_ERROR); goto end; @@ -775,6 +779,7 @@ struct lttng_kconsumerd_local_data *lttng_kconsumerd_create( goto error; } + ctx->kconsumerd_error_socket = -1; /* assign the callbacks */ ctx->on_buffer_ready = buffer_ready; ctx->on_recv_fd = recv_fd; @@ -869,6 +874,7 @@ void *lttng_kconsumerd_thread_receive_fds(void *data) DBG("Sending ready command to ltt-sessiond"); ret = lttng_kconsumerd_send_error(ctx, KCONSUMERD_COMMAND_SOCK_READY); + /* return < 0 on error, but == 0 is not fatal */ if (ret < 0) { ERR("Error sending ready command to ltt-sessiond"); goto end; @@ -997,6 +1003,7 @@ void lttng_kconsumerd_should_exit(struct lttng_kconsumerd_local_data *ctx) /* * Send return code to the session daemon. + * If the socket is not defined, we return 0, it is not a fatal error */ int lttng_kconsumerd_send_error( struct lttng_kconsumerd_local_data *ctx, int cmd)