summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Sustrik <sustrik@250bpm.com>2011-09-28 08:03:14 +0200
committerMartin Sustrik <sustrik@250bpm.com>2011-09-28 08:03:14 +0200
commit8485a5e5a4cdcb5cec800279f874c8579d246940 (patch)
tree52abacfc5ba45d366d60c9666a1d78dcf25843c8 /src
parentd726120e60e3db332ed26c2106c65271f4d8fba4 (diff)
Assert fixed in XREP & ROUTER when sending to terminating pipe (issue 258)
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/router.cpp5
-rw-r--r--src/xrep.cpp6
2 files changed, 7 insertions, 4 deletions
diff --git a/src/router.cpp b/src/router.cpp
index c8cc278..05908b5 100755
--- a/src/router.cpp
+++ b/src/router.cpp
@@ -179,8 +179,9 @@ int zmq::router_t::xsend (msg_t *msg_, int flags_)
// Push the message into the pipe. If there's no out pipe, just drop it.
if (current_out) {
bool ok = current_out->write (msg_);
- zmq_assert (ok);
- if (!more_out) {
+ if (unlikely (!ok))
+ current_out = NULL;
+ else if (!more_out) {
current_out->flush ();
current_out = NULL;
}
diff --git a/src/xrep.cpp b/src/xrep.cpp
index c304463..9f2a947 100644
--- a/src/xrep.cpp
+++ b/src/xrep.cpp
@@ -22,6 +22,7 @@
#include "pipe.hpp"
#include "wire.hpp"
#include "random.hpp"
+#include "likely.hpp"
#include "err.hpp"
zmq::xrep_t::xrep_t (class ctx_t *parent_, uint32_t tid_) :
@@ -163,8 +164,9 @@ int zmq::xrep_t::xsend (msg_t *msg_, int flags_)
// Push the message into the pipe. If there's no out pipe, just drop it.
if (current_out) {
bool ok = current_out->write (msg_);
- zmq_assert (ok);
- if (!more_out) {
+ if (unlikely (!ok))
+ current_out = NULL;
+ else if (!more_out) {
current_out->flush ();
current_out = NULL;
}