From c42343d3f027248514344aec9e3814dfe1047d59 Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Sat, 13 Mar 2010 12:34:55 +0100 Subject: pipe_t::rollback removes only unfinished message from the pipe rather than all unflushed messages --- src/pipe.cpp | 4 ++++ src/pipe.hpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') 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. -- cgit v1.2.3