When checking for events on a SUB socket with zmq_getsockopt(sock, ZMQ_EVENTS, &events, &size), the variable should be set to ZMQ_POLLIN. In 3.0, it is set to 0.
This only occurs when the SUB socket binds and the PUB connects. If you swap the bind/connect on the sockets, it works.
This same code works in 2.1.x regardless of the order of bind/connect.
(issue has been committed to the issues repository.)
|Field||Original Value||New Value|
|Priority||Minor [ 4 ]||Critical [ 2 ]|
|Priority||Critical [ 2 ]||Major [ 3 ]|
[ Here is a workaround that works:
- use XSUB instead of SUB
- after XSUB connects allow 20 msec for connection to establish
- send subscription manually, as message starting with 0x01
- allow 20 msec for publisher to receive subscription (if you need to synch it)
|Comment||[ Sadly the workaround doesn't work consistently... :-/ ]|