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>
Thu, 6 Aug 2015 02:26:37 +0000 (22:26 -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 97537c538b9b28d37cbcbbbe857951b1545ef2a6..a66bb750a8633567d8020ba3ac1c1d6571f62662 100644 (file)
@@ -173,7 +173,7 @@ ssize_t lttcomm_recv_unix_sock(int sock, void *buf, size_t len)
 
        do {
                len_last = iov[0].iov_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;
                if (ret > 0) {
                        iov[0].iov_base += ret;
                        iov[0].iov_len -= ret;
This page took 0.025421 seconds and 4 git commands to generate.