diff options
-rw-r--r-- | cpp/src/qpid/broker/IncompleteMessageList.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/cpp/src/qpid/broker/IncompleteMessageList.cpp b/cpp/src/qpid/broker/IncompleteMessageList.cpp index 64562dfb57..bfa7b5dd62 100644 --- a/cpp/src/qpid/broker/IncompleteMessageList.cpp +++ b/cpp/src/qpid/broker/IncompleteMessageList.cpp @@ -47,9 +47,12 @@ void IncompleteMessageList::process(const CompletionListener& listen, bool sync) boost::intrusive_ptr<Message>& msg = incomplete.front(); if (!msg->isEnqueueComplete()) { if (sync){ - msg->flush(); + { + sys::Mutex::ScopedUnlock u(lock); + msg->flush(); // Can re-enter IncompleteMessageList::enqueueComplete + } while (!msg->isEnqueueComplete()) - lock.wait(); + lock.wait(); } else { //leave the message as incomplete for now return; |