From 6046c7a7fd3bcf0d1f1ac9cd9074a7d5d13aac3b Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Thu, 9 Jun 2011 15:35:35 +0000 Subject: QPID-3298: don't include the internal federation related args in the biding for headers exchange git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1133942 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/broker/HeadersExchange.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'qpid/cpp/src/qpid') diff --git a/qpid/cpp/src/qpid/broker/HeadersExchange.cpp b/qpid/cpp/src/qpid/broker/HeadersExchange.cpp index abcaa5f69d..4bda70d313 100644 --- a/qpid/cpp/src/qpid/broker/HeadersExchange.cpp +++ b/qpid/cpp/src/qpid/broker/HeadersExchange.cpp @@ -112,9 +112,14 @@ bool HeadersExchange::bind(Queue::shared_ptr queue, const string& bindingKey, co { Mutex::ScopedLock l(lock); - Binding::shared_ptr binding (new Binding (bindingKey, queue, this, *args)); + //NOTE: do not include the fed op/tags/origin in the + //arguments as when x-match is 'all' these would prevent + //matching (they are internally added properties + //controlling binding propagation but not relevant to + //actual routing) + Binding::shared_ptr binding (new Binding (bindingKey, queue, this, extra_args)); BoundKey bk(binding); - if (bindings.add_unless(bk, MatchArgs(queue, args))) { + if (bindings.add_unless(bk, MatchArgs(queue, &extra_args))) { binding->startManagement(); propagate = bk.fedBinding.addOrigin(queue->getName(), fedOrigin); if (mgmtExchange != 0) { -- cgit v1.2.1