From 92178a57e70d04cbd5487d1e421cfbb3c5be44ce Mon Sep 17 00:00:00 2001 From: Stefan Eilemann Date: Fri, 28 Jul 2017 09:49:46 +0200 Subject: [PATCH] Fix spurious test failure in reqRep --- zeroeq/client.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/zeroeq/client.cpp b/zeroeq/client.cpp index 4f936c2..2d7bea2 100644 --- a/zeroeq/client.cpp +++ b/zeroeq/client.cpp @@ -18,8 +18,8 @@ class Client::Impl : public detail::Receiver public: explicit Impl(const std::string& session) : detail::Receiver(SERVER_SERVICE, session == DEFAULT_SESSION - ? getDefaultRepSession() - : session) + ? getDefaultRepSession() + : session) , _servers(zmq_socket(getContext(), ZMQ_DEALER), [](void* s) { ::zmq_close(s); }) { @@ -78,9 +78,9 @@ class Client::Impl : public detail::Receiver uint64_t id; uint128_t replyID; - if (!_recv(&id, sizeof(id)) || !_recv(nullptr, 0)) + if (!_recv(&id, sizeof(id), ZMQ_DONTWAIT) || !_recv(nullptr, 0, 0)) return false; - const bool payload = _recv(&replyID, sizeof(replyID)); + const bool payload = _recv(&replyID, sizeof(replyID), 0); #ifdef ZEROEQ_BIGENDIAN detail::byteswap(replyID); // convert to little endian wire protocol @@ -133,11 +133,12 @@ class Client::Impl : public detail::Receiver } /** @return true if more data available */ - bool _recv(void* data, const size_t size) + bool _recv(void* data, const size_t size, const int flags) { zmq_msg_t msg; zmq_msg_init(&msg); - zmq_msg_recv(&msg, _servers.get(), 0); + if (zmq_msg_recv(&msg, _servers.get(), flags) == -1) + return false; if (zmq_msg_size(&msg) != size) ZEROEQWARN << "Reply size mismatch, expected " << size << " got "