diff options
Diffstat (limited to 'qpid/cpp')
| -rw-r--r-- | qpid/cpp/src/qpid/broker/IngressCompletion.cpp | 5 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/IngressCompletion.h | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/broker/IngressCompletion.cpp b/qpid/cpp/src/qpid/broker/IngressCompletion.cpp index 5affd2b940..51eafb8d86 100644 --- a/qpid/cpp/src/qpid/broker/IngressCompletion.cpp +++ b/qpid/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 diff --git a/qpid/cpp/src/qpid/broker/IngressCompletion.h b/qpid/cpp/src/qpid/broker/IngressCompletion.h index 6fdbb12aa1..28bb9cf03d 100644 --- a/qpid/cpp/src/qpid/broker/IngressCompletion.h +++ b/qpid/cpp/src/qpid/broker/IngressCompletion.h @@ -24,6 +24,7 @@ #include "AsyncCompletion.h" #include "qpid/sys/Mutex.h" #include <boost/shared_ptr.hpp> +#include <boost/weak_ptr.hpp> #include <vector> namespace qpid { @@ -42,7 +43,7 @@ class IngressCompletion : public AsyncCompletion void enqueueAsync(boost::shared_ptr<Queue>); void flush(); private: - typedef std::vector<boost::shared_ptr<Queue> > Queues; + typedef std::vector<boost::weak_ptr<Queue> > Queues; Queues queues; qpid::sys::Mutex lock; }; |
