/*
* Recv a message accompanied by fd(s) from a unix socket.
*
- * Returns the size of received data, or negative error value.
- *
* Expect at most "nb_fd" file descriptors. Returns the number of fd
* actually received in nb_fd.
* Returns -EPIPE on orderly shutdown.
goto end;
}
memcpy(fds, CMSG_DATA(cmsg), sizeof_fds);
- ret = sizeof_fds;
+ ret = nb_fd;
end:
return ret;
}
ret = lttng_ust_add_fd_to_tracker(wakeup_fd);
if (ret < 0) {
- lttng_ust_unlock_fd_tracker();
ret = close(wakeup_fd);
if (ret) {
PERROR("close on wakeup_fd");
}
len = -EIO;
+ lttng_ust_unlock_fd_tracker();
goto error_recv;
}
ret = lttng_ust_add_fd_to_tracker(fds[0]);
if (ret < 0) {
- lttng_ust_unlock_fd_tracker();
ret = close(fds[0]);
if (ret) {
PERROR("close on received shm_fd");
}
ret = -EIO;
+ lttng_ust_unlock_fd_tracker();
goto error;
}
*shm_fd = ret;
ret = lttng_ust_add_fd_to_tracker(fds[1]);
if (ret < 0) {
- lttng_ust_unlock_fd_tracker();
ret = close(*shm_fd);
if (ret) {
PERROR("close on shm_fd");
PERROR("close on received wakeup_fd");
}
ret = -EIO;
+ lttng_ust_unlock_fd_tracker();
goto error;
}
*wakeup_fd = ret;