From 82012667cca5249ba7aa16ac5880b86ac54f3e98 Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Mon, 7 Dec 2009 17:28:43 +0100 Subject: Deadlock on zmq_close --- src/fd_signaler.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/fd_signaler.cpp') diff --git a/src/fd_signaler.cpp b/src/fd_signaler.cpp index 79696a3..a10872d 100644 --- a/src/fd_signaler.cpp +++ b/src/fd_signaler.cpp @@ -78,10 +78,13 @@ uint64_t zmq::fd_signaler_t::poll () ssize_t sz; while (true) { sz = read (fd, &signals, sizeof (uint64_t)); - if (sz == 0 || (errno != EAGAIN && errno != EINTR)) - break; + if (sz == -1) { + if (errno == EAGAIN || errno == EINTR) + continue; + zmq_assert (false); + } + break; } - errno_assert (sz != -1); // Set to non-blocking mode. rc = fcntl (fd, F_SETFL, flags | O_NONBLOCK); -- cgit v1.2.3