From 7668e7976dc6c3e18a314d991381f29f5cbcc6ef Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Mon, 12 Apr 2010 09:57:34 +0200 Subject: zmq_poll returns ETERM in case of context termination --- doc/zmq_socket.txt | 3 --- src/zmq.cpp | 11 +++++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/doc/zmq_socket.txt b/doc/zmq_socket.txt index a9dd528..8f10cc7 100644 --- a/doc/zmq_socket.txt +++ b/doc/zmq_socket.txt @@ -117,9 +117,6 @@ The requested socket 'type' is invalid. The number of application threads using sockets within this 'context' has been exceeded. See the 'app_threads' parameter of the _zmq_init()_ function. -*ETERM*:: -The associated context was terminted. - SEE ALSO -------- diff --git a/src/zmq.cpp b/src/zmq.cpp index 0681cbb..74d52f6 100644 --- a/src/zmq.cpp +++ b/src/zmq.cpp @@ -408,7 +408,11 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_) // Process 0MQ commands if needed. if (nsockets && pollfds [npollfds -1].revents & POLLIN) - app_thread->process_commands (false, false); + if (!app_thread->process_commands (false, false)) { + free (pollfds); + errno = ETERM; + return -1; + } // Check for the events. int pollfd_pos = 0; @@ -560,7 +564,10 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_) // Process 0MQ commands if needed. if (nsockets && FD_ISSET (notify_fd, &inset)) - app_thread->process_commands (false, false); + if (!app_thread->process_commands (false, false)) { + errno = ETERM; + return -1; + } // Check for the events. for (int i = 0; i != nitems_; i++) { -- cgit v1.2.3