X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=liblttkconsumerd%2Fliblttkconsumerd.c;h=f60888a83fc8f5ebc5758155770876973216c01e;hb=17edf6cea62f0ed842a5a9e831c7cc868fa43600;hp=1e86d28d0cc1ea9cf6afecfb22f554b040ebef13;hpb=bb61c89440b5ed49c3b4a7ea0064eb5e4cac486a;p=lttng-tools.git diff --git a/liblttkconsumerd/liblttkconsumerd.c b/liblttkconsumerd/liblttkconsumerd.c index 1e86d28d0..f60888a83 100644 --- a/liblttkconsumerd/liblttkconsumerd.c +++ b/liblttkconsumerd/liblttkconsumerd.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "libkernelctl.h" #include "liblttkconsumerd.h" @@ -585,7 +586,6 @@ static int kconsumerd_consumerd_recv_fd(int sfd, struct pollfd *kconsumerd_sockpoll, int size, enum kconsumerd_command cmd_type) { - struct msghdr msg; struct iovec iov[1]; int ret = 0, i, tmp2; struct cmsghdr *cmsg; @@ -596,8 +596,11 @@ static int kconsumerd_consumerd_recv_fd(int sfd, /* the number of fds we are about to receive */ nb_fd = size / sizeof(struct lttcomm_kconsumerd_msg); + /* + * nb_fd is the number of fds we receive. One fd per recvmsg. + */ for (i = 0; i < nb_fd; i++) { - memset(&msg, 0, sizeof(msg)); + struct msghdr msg = { 0 }; /* Prepare to receive the structures */ iov[0].iov_base = &lkm; @@ -631,12 +634,13 @@ static int kconsumerd_consumerd_recv_fd(int sfd, kconsumerd_send_error(KCONSUMERD_ERROR_RECV_FD); goto end; } + /* if we received fds */ 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, (CMSG_DATA(cmsg)[0])); - ret = kconsumerd_add_fd(&lkm, (CMSG_DATA(cmsg)[0])); + DBG("kconsumerd_add_fd %s (%d)", lkm.path_name, ((int *) CMSG_DATA(cmsg))[0]); + ret = kconsumerd_add_fd(&lkm, ((int *) CMSG_DATA(cmsg))[0]); if (ret < 0) { kconsumerd_send_error(KCONSUMERD_OUTFD_ERROR); goto end;