diff options
author | Gordon Sim <gsim@apache.org> | 2014-12-17 14:29:44 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2014-12-17 14:29:44 +0000 |
commit | faec291315dc851eefa59b63f3c7107888b75f98 (patch) | |
tree | 4715e5a7718ef91759230c49e4d218707a9f2397 /qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp | |
parent | 9f634ba1b0f2ee6ea2f2e0c3a7a3d892d3eeda7c (diff) | |
download | qpid-python-faec291315dc851eefa59b63f3c7107888b75f98.tar.gz |
QPID-6274: Delete subscription queue immediately on link close
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1646260 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp')
-rw-r--r-- | qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp b/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp index 54993d071e..d0b41c6c90 100644 --- a/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp +++ b/qpid/cpp/src/qpid/broker/amqp/Outgoing.cpp @@ -156,7 +156,7 @@ bool OutgoingFromQueue::canDeliver() return deliveries[current].delivery == 0 && pn_link_credit(link); } -void OutgoingFromQueue::detached() +void OutgoingFromQueue::detached(bool closed) { QPID_LOG(debug, "Detaching outgoing link " << getName() << " from " << queue->getName()); queue->cancel(shared_from_this()); @@ -164,12 +164,14 @@ void OutgoingFromQueue::detached() for (size_t i = 0 ; i < deliveries.capacity(); ++i) { if (deliveries[i].msg) queue->release(deliveries[i].cursor, true); } - if (exclusive) queue->releaseExclusiveOwnership(); - else if (isControllingUser) queue->releaseFromUse(true); + if (exclusive) { + queue->releaseExclusiveOwnership(closed); + } else if (isControllingUser) { + queue->releaseFromUse(true); + } cancelled = true; } - OutgoingFromQueue::~OutgoingFromQueue() { if (!cancelled && isControllingUser) queue->releaseFromUse(true); |