From f0dce000b2184b87318016022efe14a9618e74a9 Mon Sep 17 00:00:00 2001 From: Min RK Date: Thu, 21 Jan 2016 16:21:07 +0100 Subject: [PATCH] stop previous monitor socket before starting new one avoids leaking sockets due to multiple monitor calls on one socket Alternative: raise error (not sure what errno; EADDRINUSE?) if collision detected; force manual stop. --- src/socket_base.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/socket_base.cpp b/src/socket_base.cpp index 3f969367..32ddeb5a 100644 --- a/src/socket_base.cpp +++ b/src/socket_base.cpp @@ -1537,6 +1537,10 @@ int zmq::socket_base_t::monitor (const char *addr_, int events_) errno = EPROTONOSUPPORT; return -1; } + // already monitoring. Stop previous monitor before starting new one. + if (monitor_socket != NULL) { + stop_monitor (true); + } // Register events to monitor monitor_events = events_; monitor_socket = zmq_socket (get_ctx (), ZMQ_PAIR);