From 7593d815ac57f2877480c5056b2f1aa65460f5c3 Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Mon, 8 Feb 2010 10:34:12 +0100 Subject: ZMQII-64: First message stuck in 0MQ in case of immediate disconnection --- src/zmq_engine.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/zmq_engine.cpp') diff --git a/src/zmq_engine.cpp b/src/zmq_engine.cpp index dace6ae..01fe98c 100644 --- a/src/zmq_engine.cpp +++ b/src/zmq_engine.cpp @@ -81,6 +81,8 @@ void zmq::zmq_engine_t::unplug () void zmq::zmq_engine_t::in_event () { + bool disconnection = false; + // If there's no data to process in the buffer... if (!insize) { @@ -91,8 +93,7 @@ void zmq::zmq_engine_t::in_event () // Check whether the peer has closed the connection. if (insize == (size_t) -1) { insize = 0; - error (); - return; + disconnection = true; } } @@ -114,6 +115,9 @@ void zmq::zmq_engine_t::in_event () // Flush all messages the decoder may have produced. inout->flush (); + + if (disconnection) + error (); } void zmq::zmq_engine_t::out_event () -- cgit v1.2.3