diff --git a/src/socket_base.cpp b/src/socket_base.cpp index ea178a8687..3dcae563d1 100644 --- a/src/socket_base.cpp +++ b/src/socket_base.cpp @@ -1497,12 +1497,12 @@ int zmq::socket_base_t::monitor (const char *addr_, int events_) int linger = 0; int rc = zmq_setsockopt (monitor_socket, ZMQ_LINGER, &linger, sizeof (linger)); if (rc == -1) - stop_monitor (); + stop_monitor (false); // Spawn the monitor socket endpoint rc = zmq_bind (monitor_socket, addr_); if (rc == -1) - stop_monitor (); + stop_monitor (false); return rc; } @@ -1598,10 +1598,10 @@ void zmq::socket_base_t::monitor_event (int event_, int value_, const std::strin } } -void zmq::socket_base_t::stop_monitor (void) +void zmq::socket_base_t::stop_monitor (bool send_monitor_stopped_event_) { if (monitor_socket) { - if (monitor_events & ZMQ_EVENT_MONITOR_STOPPED) + if ((monitor_events & ZMQ_EVENT_MONITOR_STOPPED) && send_monitor_stopped_event_) monitor_event (ZMQ_EVENT_MONITOR_STOPPED, 0, ""); zmq_close (monitor_socket); monitor_socket = NULL; diff --git a/src/socket_base.hpp b/src/socket_base.hpp index 8d82842443..4e0571ae8a 100644 --- a/src/socket_base.hpp +++ b/src/socket_base.hpp @@ -175,7 +175,7 @@ namespace zmq void monitor_event (int event_, int value_, const std::string& addr_); // Monitor socket cleanup - void stop_monitor (); + void stop_monitor (bool send_monitor_stopped_event_ = true); // Next assigned name on a zmq_connect() call used by ROUTER and STREAM socket types std::string connect_rid;