avoid duplicate entries in zmq_poll

zmq_poller doesn't allow a socket to appear twice
This commit is contained in:
Min RK 2016-09-28 16:57:05 +02:00
parent b0df7f1f17
commit c636147c98

View File

@ -130,6 +130,15 @@ int zmq::proxy (
{ backend_, 0, ZMQ_POLLOUT, 0 } { backend_, 0, ZMQ_POLLOUT, 0 }
}; };
int control_idx = 2;
if (frontend_ == backend_) {
// when frontend & backend are the same,
// avoid duplicate poll entries
qt_poll_items -= 1;
items[1] = items[2];
control_idx = 1;
}
// Proxy can be in these three states // Proxy can be in these three states
enum { enum {
active, active,
@ -154,7 +163,7 @@ int zmq::proxy (
} }
// Process a control command if any // Process a control command if any
if (control_ && items [2].revents & ZMQ_POLLIN) { if (control_ && items [control_idx].revents & ZMQ_POLLIN) {
rc = control_->recv (&msg, 0); rc = control_->recv (&msg, 0);
if (unlikely (rc < 0)) if (unlikely (rc < 0))
return -1; return -1;