Fix: recvmsg should handle EINTR
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 6 Mar 2012 23:10:43 +0000 (18:10 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 6 Mar 2012 23:10:43 +0000 (18:10 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust-comm/lttng-ust-comm.c

index 3277191c397f101e0cffa6dc30fdf0d3f9ed8049..21f48ed00bf00cfa10351df04950817bb968ea25 100644 (file)
@@ -248,7 +248,9 @@ ssize_t ustcomm_recv_unix_sock(int sock, void *buf, size_t len)
        msg.msg_iov = iov;
        msg.msg_iovlen = 1;
 
-       ret = recvmsg(sock, &msg, 0);
+       do {
+               ret = recvmsg(sock, &msg, 0);
+       } while (ret < 0 && errno == EINTR);
        if (ret < 0) {
                perror("recvmsg");
        }
@@ -462,7 +464,10 @@ int ustcomm_recv_fd(int sock)
        msg.msg_control = recv_fd;
        msg.msg_controllen = sizeof(recv_fd);
 
-       if ((ret = recvmsg(sock, &msg, 0)) < 0) {
+       do {
+               ret = recvmsg(sock, &msg, 0);
+       } while (ret < 0 && errno == EINTR);
+       if (ret < 0) {
                perror("recvmsg");
                goto end;
        }
This page took 0.025035 seconds and 4 git commands to generate.