0
0
mirror of https://github.com/zeromq/libzmq.git synced 2024-12-29 08:39:42 +08:00

Merge pull request #2143 from minrk/avoid-duplicate-poller-proxy

avoid passing duplicate entries to zmq_poll
This commit is contained in:
Constantin Rack 2016-09-29 13:30:15 +02:00 committed by GitHub
commit 872f1e5a9d

View File

@ -130,6 +130,15 @@ int zmq::proxy (
{ 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
enum {
active,
@ -154,7 +163,7 @@ int zmq::proxy (
}
// 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);
if (unlikely (rc < 0))
return -1;