From 08aa59a733f770e6505ce861d717170aaa343329 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Thu, 29 Mar 2007 22:30:48 +0000 Subject: Fixed memory leak: removed Binding and ExchangeBinding. These classes unbind a deleted queue from any Exchanges. But Exchanges hold shared_ptr, so queues never deleted while the exchange exists. Moreover queue-binding form a shared_ptr cycle causing a leak. Raised QPID-438 for the remaining problem: destroyed queues are never unbound or deleted git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@523857 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/lib/broker/FanOutExchange.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'qpid/cpp/lib/broker/FanOutExchange.cpp') diff --git a/qpid/cpp/lib/broker/FanOutExchange.cpp b/qpid/cpp/lib/broker/FanOutExchange.cpp index 48afcc20d5..b487593efd 100644 --- a/qpid/cpp/lib/broker/FanOutExchange.cpp +++ b/qpid/cpp/lib/broker/FanOutExchange.cpp @@ -19,7 +19,6 @@ * */ #include -#include #include using namespace qpid::broker; @@ -28,13 +27,12 @@ using namespace qpid::sys; FanOutExchange::FanOutExchange(const std::string& _name) : Exchange(_name) {} -void FanOutExchange::bind(Queue::shared_ptr queue, const string& routingKey, const FieldTable* args){ +void FanOutExchange::bind(Queue::shared_ptr queue, const string& /*routingKey*/, const FieldTable* /*args*/){ Mutex::ScopedLock locker(lock); // Add if not already present. Queue::vector::iterator i = std::find(bindings.begin(), bindings.end(), queue); if (i == bindings.end()) { bindings.push_back(queue); - queue->bound(new ExchangeBinding(this, queue, routingKey, args)); } } @@ -43,8 +41,6 @@ void FanOutExchange::unbind(Queue::shared_ptr queue, const string& /*routingKey* Queue::vector::iterator i = std::find(bindings.begin(), bindings.end(), queue); if (i != bindings.end()) { bindings.erase(i); - // TODO aconway 2006-09-14: What about the ExchangeBinding object? - // Don't we have to verify routingKey/args match? } } -- cgit v1.2.1