From 2215c3e352cc3ec16326bb8f50a7570e266207ae Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Wed, 27 Jan 2016 21:35:50 +0000 Subject: [PATCH] receive_responses: avoid potential hangup * socketutils.c (receive_responses): Pass MSG_DONTWAIT to recvmsg after the first recvmsg call to avoid potential hangup. --- socketutils.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/socketutils.c b/socketutils.c index 67fc1ee7..62253044 100644 --- a/socketutils.c +++ b/socketutils.c @@ -150,6 +150,7 @@ receive_responses(const int fd, const unsigned long inode, .iov_base = buf, .iov_len = sizeof(buf) }; + int flags = 0; for (;;) { ssize_t ret; @@ -161,7 +162,7 @@ receive_responses(const int fd, const unsigned long inode, .msg_iovlen = 1 }; - ret = recvmsg(fd, &msg, 0); + ret = recvmsg(fd, &msg, flags); if (ret < 0) { if (errno == EINTR) continue; @@ -180,6 +181,7 @@ receive_responses(const int fd, const unsigned long inode, if (parser(proto_name, NLMSG_DATA(h), h->nlmsg_len, inode)) return true; } + flags = MSG_DONTWAIT; } } -- 2.40.0