From 4e7158b67dcbbc307e76616a85aa34cc83ad6606 Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Mon, 1 Mar 2010 17:40:39 +0100 Subject: return POLLERR from polling on POSIX sockets (linux version) --- src/zmq.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/zmq.cpp b/src/zmq.cpp index ca9a970..7ff1e52 100644 --- a/src/zmq.cpp +++ b/src/zmq.cpp @@ -405,9 +405,14 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_) // If the poll item is a raw file descriptor, simply convert // the events to zmq_pollitem_t-style format. if (!items_ [i].socket) { - items_ [i].revents = - (pollfds [pollfd_pos].revents & POLLIN ? ZMQ_POLLIN : 0) | - (pollfds [pollfd_pos].revents & POLLOUT ? ZMQ_POLLOUT : 0); + items_ [i].revents = 0; + if (pollfds [pollfd_pos].revents & POLLIN) + items_ [i].revents |= ZMQ_POLLIN; + if (pollfds [pollfd_pos].revents & POLLOUT) + items_ [i].revents |= ZMQ_POLLOUT; + if (pollfds [pollfd_pos].revents & ~(POLLIN | POLLOUT)) + items_ [i].revents |= ZMQ_POLLERR; + if (items_ [i].revents) nevents++; pollfd_pos++; -- cgit v1.2.3