diff options
author | Martin Sustrik <sustrik@250bpm.com> | 2010-03-13 12:34:55 +0100 |
---|---|---|
committer | Martin Sustrik <sustrik@250bpm.com> | 2010-03-13 12:34:55 +0100 |
commit | c42343d3f027248514344aec9e3814dfe1047d59 (patch) | |
tree | 4d4713585b2407ebe4371b2b4cbe4d680eb9098a | |
parent | dcb983699e52bf2e075baaeef250bcd3c82e4846 (diff) |
pipe_t::rollback removes only unfinished message from the pipe rather than all unflushed messages
-rw-r--r-- | src/pipe.cpp | 4 | ||||
-rw-r--r-- | src/pipe.hpp | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/pipe.cpp b/src/pipe.cpp index 53dfb21..14a6ef4 100644 --- a/src/pipe.cpp +++ b/src/pipe.cpp @@ -170,6 +170,10 @@ void zmq::writer_t::rollback () zmq_msg_t msg; while (pipe->unwrite (&msg)) { + if (!(msg.flags & ZMQ_MSG_TBC)) { + pipe->write (msg); + break; + } zmq_msg_close (&msg); msgs_written--; } diff --git a/src/pipe.hpp b/src/pipe.hpp index 0ac7fc5..a4569e3 100644 --- a/src/pipe.hpp +++ b/src/pipe.hpp @@ -98,7 +98,7 @@ namespace zmq // message cannot be written because high watermark was reached. bool write (zmq_msg_t *msg_); - // Remove any unflushed messages from the pipe. + // Remove unfinished part of a message from the pipe. void rollback (); // Flush the messages downsteam. |