summaryrefslogtreecommitdiff
path: root/src/rabbit_exchange_type_direct.erl
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2011-01-24 17:40:26 +0000
committerEmile Joubert <emile@rabbitmq.com>2011-01-24 17:40:26 +0000
commitd887a84c64321582266051b9a26ac9a9f1d1f6f7 (patch)
tree2e7eb985f76143d2c21989609648ddfb2609cf9d /src/rabbit_exchange_type_direct.erl
parent7068da5a734cb426d193aaf16a9ca410a4e9d454 (diff)
downloadrabbitmq-server-d887a84c64321582266051b9a26ac9a9f1d1f6f7.tar.gz
Treat sender-specified destinations as routing keys
rather than queue names
Diffstat (limited to 'src/rabbit_exchange_type_direct.erl')
-rw-r--r--src/rabbit_exchange_type_direct.erl10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl
index ade57451..97988381 100644
--- a/src/rabbit_exchange_type_direct.erl
+++ b/src/rabbit_exchange_type_direct.erl
@@ -51,13 +51,13 @@ description() ->
[{name, <<"direct">>},
{description, <<"AMQP direct exchange, as per the AMQP specification">>}].
-route(#exchange{name = #resource{virtual_host = VHost} = Name},
+route(#exchange{name = Name},
#delivery{message = #basic_message{routing_key = RoutingKey,
content = Content}}) ->
- BindingRoutes = rabbit_router:match_routing_key(Name, RoutingKey),
- HeaderRoutes = rabbit_exchange:header_routes(
- (Content#content.properties)#'P_basic'.headers, VHost),
- BindingRoutes ++ HeaderRoutes.
+ HeaderKeys = rabbit_exchange:header_routes(
+ (Content#content.properties)#'P_basic'.headers),
+ lists:flatten([rabbit_router:match_routing_key(Name, RKey) ||
+ RKey <- [RoutingKey | HeaderKeys]]).
validate(_X) -> ok.
create(_Tx, _X) -> ok.