summaryrefslogtreecommitdiff
path: root/src/socket_base.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/socket_base.cpp')
-rw-r--r--src/socket_base.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/socket_base.cpp b/src/socket_base.cpp
index 43209d5..2348f67 100644
--- a/src/socket_base.cpp
+++ b/src/socket_base.cpp
@@ -326,17 +326,20 @@ int zmq::socket_base_t::recv (::zmq_msg_t *msg_, int flags_)
if (errno != EAGAIN)
return -1;
app_thread->process_commands (false, false);
- ticks = 0;
rc = xrecv (msg_, flags_);
+ ticks = 0;
}
else {
while (rc != 0) {
- if (errno != EAGAIN)
+ if (errno == EINPROGRESS)
+ app_thread->process_commands (false, true);
+ else if (errno == EAGAIN)
+ app_thread->process_commands (true, false);
+ else
return -1;
- app_thread->process_commands (true, false);
- ticks = 0;
rc = xrecv (msg_, flags_);
}
+ ticks = 0;
}