• Marc Sune's avatar
    Fix ROUTER's xhas_out() in MANDATORY mode · b7b89a8f
    Marc Sune authored
    Before this commit, xhas_out() was returning true regardless. This
    was correct before the ZMQ_ROUTER_MANDATORY flag as introduced.
    However, ZMQ_POLLOUT.
    
    With this commit, _if_ ZMQ_ROUTER_MANDATORY is set, xhas_out() will
    return false if ALL peer's outgoing pipes are full.
    
    There is an outstanding high-level design question:
    
    If ZMQ_ROUTER_MANDATORY is set, and zmq_poll() waits for ZMQ_POLLOUT
    events, zmq_poll() will immediately wake up if only 1 pipe has
    room to send, regardless of the peer, creating a busy loop of
    zmq_poll() wake-up, zmq_send() (EAGAIN). There is no way for
    the application to selectively wait for ZMQ_POLLOUT for specific
    peer(s), which seems somehow necessary in ZMQ_ROUTER_MANDATORY.
    
    This discussion will be addressed in a separate issue.
    Signed-off-by: 's avatarMarc Sune <marc@voltanet.io>
    Signed-off-by: 's avatarFredi Raspall <fredi@voltanet.io>
    b7b89a8f
Name
Last commit
Last update
.github Loading commit data...
RELICENSE Loading commit data...
builds Loading commit data...
doc Loading commit data...
include Loading commit data...
m4 Loading commit data...
packaging Loading commit data...
perf Loading commit data...
src Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitignore Loading commit data...
.hgeol Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
CMakeLists.txt Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
Dockerfile Loading commit data...
Doxygen.cfg Loading commit data...
FindSodium.cmake Loading commit data...
INSTALL Loading commit data...
Makefile.am Loading commit data...
NEWS Loading commit data...
README.cygwin.md Loading commit data...
README.doxygen.md Loading commit data...
README.md Loading commit data...
ZeroMQConfig.cmake.in Loading commit data...
acinclude.m4 Loading commit data...
appveyor.yml Loading commit data...
autogen.sh Loading commit data...
branding.bmp Loading commit data...
ci_build.sh Loading commit data...
ci_deploy.sh Loading commit data...
configure.ac Loading commit data...
installer.ico Loading commit data...
version.sh Loading commit data...