diff --git a/include/zmq.h b/include/zmq.h index 6acc62f2..e5f3bcca 100644 --- a/include/zmq.h +++ b/include/zmq.h @@ -314,12 +314,14 @@ ZMQ_EXPORT int zmq_msg_set (zmq_msg_t *msg, int option, int optval); #define ZMQ_EVENT_CLOSED 128 #define ZMQ_EVENT_CLOSE_FAILED 256 #define ZMQ_EVENT_DISCONNECTED 512 +#define ZMQ_EVENT_MONITOR_STOPPED 1024 #define ZMQ_EVENT_ALL ( ZMQ_EVENT_CONNECTED | ZMQ_EVENT_CONNECT_DELAYED | \ ZMQ_EVENT_CONNECT_RETRIED | ZMQ_EVENT_LISTENING | \ ZMQ_EVENT_BIND_FAILED | ZMQ_EVENT_ACCEPTED | \ ZMQ_EVENT_ACCEPT_FAILED | ZMQ_EVENT_CLOSED | \ - ZMQ_EVENT_CLOSE_FAILED | ZMQ_EVENT_DISCONNECTED ) + ZMQ_EVENT_CLOSE_FAILED | ZMQ_EVENT_DISCONNECTED | \ + ZMQ_EVENT_MONITOR_STOPPED) /* Socket event data */ typedef struct { diff --git a/src/socket_base.cpp b/src/socket_base.cpp index 25c4bbff..8034d143 100644 --- a/src/socket_base.cpp +++ b/src/socket_base.cpp @@ -1221,6 +1221,12 @@ void zmq::socket_base_t::monitor_event (zmq_event_t event_, const std::string& a void zmq::socket_base_t::stop_monitor() { if (monitor_socket) { + if (monitor_events & ZMQ_EVENT_MONITOR_STOPPED) { + zmq_event_t event; + event.event = ZMQ_EVENT_MONITOR_STOPPED; + event.value = 0; + monitor_event (event, ""); + } zmq_close (monitor_socket); monitor_socket = NULL; monitor_events = 0;