Fix: Use MSG_NOSIGNAL when calling sendmsg()
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 6 Aug 2015 01:26:34 +0000 (21:26 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 14 Aug 2015 22:09:33 +0000 (18:09 -0400)
Applications using the liblttng-ctl library are most probably
not expecting the SIGPIPE signal which can be triggered by
sendmsg() on a closed socket. Use the MSG_NOSIGNAL flag to
handle such cases gracefully.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/sessiond-comm/unix.c

index 2c87b82c451f87de02fb5db074cb24a32c752696..24c7cfccd9920baeffb06336c379c49c57f87f48 100644 (file)
@@ -172,7 +172,7 @@ ssize_t lttcomm_recv_unix_sock(int sock, void *buf, size_t len)
 
        do {
                len_last = iov[0].iov_len;
-               ret = recvmsg(sock, &msg, 0);
+               ret = recvmsg(sock, &msg, MSG_NOSIGNAL);
                if (ret > 0) {
                        iov[0].iov_base += ret;
                        iov[0].iov_len -= ret;
This page took 0.025059 seconds and 4 git commands to generate.