diff options
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
-rw-r--r-- | cpp/src/qpid/broker/Queue.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index b090ffef43..163c471286 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -609,7 +609,9 @@ bool Queue::dequeue(TransactionContext* ctxt, const QueuedMessage& msg) if (policy.get() && !policy->isEnqueued(msg)) return false; { Mutex::ScopedLock locker(messageLock); - dequeued(msg); + if (!ctxt) { + dequeued(msg); + } } if (msg.payload->isPersistent() && store && !lastValueQueue) { msg.payload->dequeueAsync(shared_from_this(), store); //increment to async counter -- for message sent to more than one queue @@ -620,6 +622,12 @@ bool Queue::dequeue(TransactionContext* ctxt, const QueuedMessage& msg) return false; } +void Queue::dequeueCommitted(const QueuedMessage& msg) +{ + Mutex::ScopedLock locker(messageLock); + dequeued(msg); +} + /** * Removes a message from the in-memory delivery queue as well * dequeing it from the logical (and persistent if applicable) queue |