From 184bdb8e2bb6fe252af1bf4dd16d1c9ed8892f7a Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Thu, 3 Mar 2011 12:37:11 +0100 Subject: Bug caused by interaction of REQ/REP routing and HWM fixed. Signed-off-by: Martin Sustrik --- src/xrep.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/xrep.cpp b/src/xrep.cpp index 422b0c0..5406a0b 100644 --- a/src/xrep.cpp +++ b/src/xrep.cpp @@ -177,8 +177,22 @@ int zmq::xrep_t::xsend (zmq_msg_t *msg_, int flags_) blob_t identity ((unsigned char*) zmq_msg_data (msg_), zmq_msg_size (msg_)); outpipes_t::iterator it = outpipes.find (identity); - if (it != outpipes.end ()) + + if (it != outpipes.end ()) { current_out = it->second.writer; + zmq_msg_t empty; + int rc = zmq_msg_init (&empty); + zmq_assert (rc == 0); + if (!current_out->check_write (&empty)) { + rc = zmq_msg_close (&empty); + zmq_assert (rc == 0); + it->second.active = false; + errno = EAGAIN; + return -1; + } + rc = zmq_msg_close (&empty); + zmq_assert (rc == 0); + } } int rc = zmq_msg_close (msg_); -- cgit v1.2.3