diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2007-06-03 08:30:42 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2007-06-03 08:30:42 +0000 |
commit | aff03ba25e41c8cb1d2cc8b206c4f046ea8d0c61 (patch) | |
tree | 8093eebc9512c67f09307422eaa7e1b3a7f730e8 /util | |
parent | 7bc05b0d6f4ebab0676113da3191ead9b7232bc6 (diff) |
libulockmgr: Work around a kernel bug in recv()
Diffstat (limited to 'util')
-rw-r--r-- | util/ulockmgr_server.c | 8 |
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; |