diff --git a/src/socket_base.cpp b/src/socket_base.cpp index 10f38d93..54036eca 100644 --- a/src/socket_base.cpp +++ b/src/socket_base.cpp @@ -677,11 +677,6 @@ int zmq::socket_base_t::recv (msg_t *msg_, int flags_) return -1; } - // Get the message. - int rc = xrecv (msg_, flags_); - if (unlikely (rc != 0 && errno != EAGAIN)) - return -1; - // Once every inbound_poll_rate messages check for signals and process // incoming commands. This happens only if we are not polling altogether // because there are messages available all the time. If poll occurs, @@ -696,6 +691,11 @@ int zmq::socket_base_t::recv (msg_t *msg_, int flags_) ticks = 0; } + // Get the message. + int rc = xrecv (msg_, flags_); + if (unlikely (rc != 0 && errno != EAGAIN)) + return -1; + // If we have the message, return immediately. if (rc == 0) { extract_flags (msg_);