diff options
author | Alan Conway <aconway@apache.org> | 2007-03-29 22:30:48 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2007-03-29 22:30:48 +0000 |
commit | 08aa59a733f770e6505ce861d717170aaa343329 (patch) | |
tree | 71638c30b5ea05b86146eed0b90c87c13f4a9135 /qpid/cpp/lib/broker/DirectExchange.cpp | |
parent | d231d58dc13bece684d1b162462f5e9d68ce9a60 (diff) | |
download | qpid-python-08aa59a733f770e6505ce861d717170aaa343329.tar.gz |
Fixed memory leak: removed Binding and ExchangeBinding.
These classes unbind a deleted queue from any Exchanges.
But Exchanges hold shared_ptr<Queue>, 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
Diffstat (limited to 'qpid/cpp/lib/broker/DirectExchange.cpp')
-rw-r--r-- | qpid/cpp/lib/broker/DirectExchange.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/qpid/cpp/lib/broker/DirectExchange.cpp b/qpid/cpp/lib/broker/DirectExchange.cpp index c898ae8d7e..0661e8c365 100644 --- a/qpid/cpp/lib/broker/DirectExchange.cpp +++ b/qpid/cpp/lib/broker/DirectExchange.cpp @@ -19,7 +19,6 @@ * */ #include <DirectExchange.h> -#include <ExchangeBinding.h> #include <iostream> using namespace qpid::broker; @@ -30,13 +29,12 @@ DirectExchange::DirectExchange(const string& _name) : Exchange(_name) { } -void DirectExchange::bind(Queue::shared_ptr queue, const string& routingKey, const FieldTable* args){ +void DirectExchange::bind(Queue::shared_ptr queue, const string& routingKey, const FieldTable*){ Mutex::ScopedLock l(lock); std::vector<Queue::shared_ptr>& queues(bindings[routingKey]); std::vector<Queue::shared_ptr>::iterator i = find(queues.begin(), queues.end(), queue); if(i == queues.end()){ bindings[routingKey].push_back(queue); - queue->bound(new ExchangeBinding(this, queue, routingKey, args)); } } |