[zeromq-dev] Polling on a REQUEST socket

Martin Sustrik sustrik at 250bpm.com
Mon Apr 12 14:54:51 CEST 2010

Hi Andreas,

> The client opens two sockets (one REQUEST and one REPLY socket).
> Then, it connects the REQUEST socket to the server's REPLY socket
> and sends a register message. Afterwards it should wait for the server's
> reply. To deal with crashing servers, I used zmq_poll() with a 5 seconds
> timeout. The problem now is that the zmq_poll() immediately returns
> with return code 0 (timeout occured) and no errno is set.
> If I use -1 as timeout instead, everthing runs fine. If I use a sleep(1)
> before the poll, everything is okay, too.
> The REPLY socket has no problem with the zmq_poll() function. It
> behaves exactly as it should do.

See the docs:

"If none of the requested events have occured on any zmq_pollitem_t 
item, zmq_poll() shall wait up to timeout microseconds for an event to 
occur on any of the requested items."

Notice the "up to" part. zmq_poll can exit earlier but should never exit 
later than the timeout specified.


More information about the zeromq-dev mailing list