Looking at socket_base_t::recv() trying to figure out what is causing my recv() hangs. Can someone confirm my understanding of the following scenario:
1. socket_base.cpp::387 - call to xrecv() returns no message so rc == -1 2. message comes in and io_thread pushes it on queue and calls send_revive() 3. continuing execution of the socket_base_t::recv() call, ticks == inbound_poll_rate so process_commands() is called -- pulling the revive message off the pipe 4. next we get into the loop that begins at socket_base.cpp:440 and never exit because of the blocking call to process_commands() that never returns due to the revive() message being pulled from the pipe back at line 399. This would result in a recv() call never returning. It would only occur if a message was received AFTER the xrecv() call on line 387 and flushed to an empty pipe with the revive command BEFORE the process_commands() call on line 399. Thoughts? I'll probably put some debug code together to see if I can confirm this. Using version 2.0.9 of zeromq on x86_64 Linux Marc
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
