diff options
Diffstat (limited to 'cpp/src/qpid/broker/DirectExchange.cpp')
| -rw-r--r-- | cpp/src/qpid/broker/DirectExchange.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/cpp/src/qpid/broker/DirectExchange.cpp b/cpp/src/qpid/broker/DirectExchange.cpp index f760bc9747..8fc8260f9e 100644 --- a/cpp/src/qpid/broker/DirectExchange.cpp +++ b/cpp/src/qpid/broker/DirectExchange.cpp @@ -43,17 +43,20 @@ DirectExchange::DirectExchange(const std::string& _name, bool _durable, } bool DirectExchange::bind(Queue::shared_ptr queue, const string& routingKey, const FieldTable*){ - Mutex::ScopedLock l(lock); - Binding::shared_ptr b(new Binding (routingKey, queue, this)); - if (bindings[routingKey].add_unless(b, MatchQueue(queue))) { - if (mgmtExchange != 0) { - mgmtExchange->inc_bindingCount(); - ((_qmf::Queue*) queue->GetManagementObject())->inc_bindingCount(); + { + Mutex::ScopedLock l(lock); + Binding::shared_ptr b(new Binding (routingKey, queue, this)); + if (bindings[routingKey].add_unless(b, MatchQueue(queue))) { + if (mgmtExchange != 0) { + mgmtExchange->inc_bindingCount(); + ((_qmf::Queue*) queue->GetManagementObject())->inc_bindingCount(); + } + } else { + return false; } - return true; - } else { - return false; } + routeIVE(); + return true; } bool DirectExchange::unbind(Queue::shared_ptr queue, const string& routingKey, const FieldTable* /*args*/){ |
