summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/IngressCompletion.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-05-24 10:24:38 +0000
committerGordon Sim <gsim@apache.org>2013-05-24 10:24:38 +0000
commit3f5c0af52efb0de29de567dc00b041c871daba65 (patch)
tree885516c889fa4dadcd047574ede391779aaab60c /cpp/src/qpid/broker/IngressCompletion.cpp
parentb008ec4e225f4381a07175587437cae07b51409d (diff)
downloadqpid-python-3f5c0af52efb0de29de567dc00b041c871daba65.tar.gz
QPID-4859: prevent circular reference on queues still holding durable messages
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1485995 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/IngressCompletion.cpp')
-rw-r--r--cpp/src/qpid/broker/IngressCompletion.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/IngressCompletion.cpp b/cpp/src/qpid/broker/IngressCompletion.cpp
index 5affd2b940..51eafb8d86 100644
--- a/cpp/src/qpid/broker/IngressCompletion.cpp
+++ b/cpp/src/qpid/broker/IngressCompletion.cpp
@@ -39,7 +39,10 @@ void IngressCompletion::flush()
queues.swap(copy);
}
for (Queues::const_iterator i = copy.begin(); i != copy.end(); ++i) {
- (*i)->flush();
+ boost::shared_ptr<Queue> q(i->lock());
+ if (q) {
+ q->flush();
+ }
}
}
}} // namespace qpid::broker