diff options
Diffstat (limited to 'cpp/src/qpid/broker/SemanticState.cpp')
| -rw-r--r-- | cpp/src/qpid/broker/SemanticState.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/SemanticState.cpp b/cpp/src/qpid/broker/SemanticState.cpp index f47726bcf8..1f7436da94 100644 --- a/cpp/src/qpid/broker/SemanticState.cpp +++ b/cpp/src/qpid/broker/SemanticState.cpp @@ -260,12 +260,20 @@ bool SemanticState::ConsumerImpl::deliver(QueuedMessage& msg) parent->deliveryAdapter.deliver(msg.payload, token); if (windowing || ackExpected) { parent->record(DeliveryRecord(msg, queue, name, token, deliveryTag, acquire, !ackExpected)); + } else if (!ackExpected) { + queue->dequeue(0, msg.payload); } } return !blocked; } } +bool SemanticState::ConsumerImpl::filter(Message::shared_ptr msg) +{ + return !(nolocal && + &parent->getSession().getConnection() == msg->getPublisher()); +} + bool SemanticState::ConsumerImpl::checkCredit(Message::shared_ptr& msg) { Mutex::ScopedLock l(lock); |
