diff options
-rw-r--r-- | src/zmq_engine.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
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 () |