aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorGravatar Miklos Szeredi <miklos@szeredi.hu>2007-06-03 08:30:42 +0000
committerGravatar Miklos Szeredi <miklos@szeredi.hu>2007-06-03 08:30:42 +0000
commitaff03ba25e41c8cb1d2cc8b206c4f046ea8d0c61 (patch)
tree8093eebc9512c67f09307422eaa7e1b3a7f730e8 /util
parent7bc05b0d6f4ebab0676113da3191ead9b7232bc6 (diff)
libulockmgr: Work around a kernel bug in recv()
Diffstat (limited to 'util')
-rw-r--r--util/ulockmgr_server.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c
index 211d74a..4f831b0 100644
--- a/util/ulockmgr_server.c
+++ b/util/ulockmgr_server.c
@@ -75,8 +75,12 @@ static int receive_message(int sock, void *buf, size_t buflen, int *fdp,
msg.msg_controllen = sizeof(ccmsg);
res = recvmsg(sock, &msg, MSG_WAITALL);
- if (!res)
- return 0;
+ if (!res) {
+ /* retry on zero return, see do_recv() in ulockmgr.c */
+ res = recvmsg(sock, &msg, MSG_WAITALL);
+ if (!res)
+ return 0;
+ }
if (res == -1) {
perror("ulockmgr_server: recvmsg");
return -1;