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.
This commit is contained in:
Min RK 2016-01-21 16:21:07 +01:00
parent f25a9c83f5
commit f0dce000b2

View File

@ -1537,6 +1537,10 @@ int zmq::socket_base_t::monitor (const char *addr_, int events_)
errno = EPROTONOSUPPORT; errno = EPROTONOSUPPORT;
return -1; return -1;
} }
// already monitoring. Stop previous monitor before starting new one.
if (monitor_socket != NULL) {
stop_monitor (true);
}
// Register events to monitor // Register events to monitor
monitor_events = events_; monitor_events = events_;
monitor_socket = zmq_socket (get_ctx (), ZMQ_PAIR); monitor_socket = zmq_socket (get_ctx (), ZMQ_PAIR);