From e387ce1571e9fbd1c7a4b9fa86385c4af741625a Mon Sep 17 00:00:00 2001 From: somdoron Date: Sun, 18 Oct 2015 21:50:24 +0300 Subject: [PATCH] remove pollfd from sockets when destroying poller --- src/socket_poller.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/socket_poller.cpp b/src/socket_poller.cpp index 16fd9b8d..189430ff 100644 --- a/src/socket_poller.cpp +++ b/src/socket_poller.cpp @@ -43,6 +43,16 @@ zmq::socket_poller_t::~socket_poller_t () // Mark the socket_poller as dead tag = 0xdeadbeef; + for (events_t::iterator it = events.begin(); it != events.end(); ++it) { + if (it->socket) { + int thread_safe; + size_t thread_safe_size = sizeof(int); + + if (zmq_getsockopt(it->socket, ZMQ_THREAD_SAFE, &thread_safe, &thread_safe_size) == 0 && thread_safe) + zmq_remove_pollfd(it->socket, pollfd); + } + } + zmq_pollfd_close (pollfd); if (poll_set) {