diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2011-04-13 14:48:25 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2011-04-13 14:48:25 +0100 |
| commit | 3ec4aacf97b27f6bea5ab6f94c599125b62994a6 (patch) | |
| tree | 2bbdb0366e53bf2561042caa3f8fd70ea98151ce | |
| parent | 1c5308fe62b259af04f90cfcab682cf9439af263 (diff) | |
| download | rabbitmq-server-git-3ec4aacf97b27f6bea5ab6f94c599125b62994a6.tar.gz | |
Simpler remove_for_source.
| -rw-r--r-- | src/rabbit_binding.erl | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl index 57c766c7db..1cb642a782 100644 --- a/src/rabbit_binding.erl +++ b/src/rabbit_binding.erl @@ -243,21 +243,16 @@ has_for_source(SrcName) -> contains(rabbit_semi_durable_route, Match). remove_for_source(SrcName) -> + Match = #route{binding = #binding{source = SrcName, _ = '_'}}, + Routes = lists:usort( + mnesia:match_object(rabbit_route, Match, write) ++ + mnesia:match_object(rabbit_durable_route, Match, write)), [begin ok = mnesia:delete_object(rabbit_reverse_route, reverse_route(Route), write), ok = delete_forward_routes(Route), Route#route.binding - end || Route <- sets:to_list( - sets:union( - [sets:from_list(routes_for_source(SrcName, T)) || - T <- [rabbit_route, rabbit_semi_durable_route, - rabbit_durable_route]]))]. - -routes_for_source(SrcName, Table) -> - mnesia:match_object(Table, #route{binding = #binding{source = SrcName, - _ = '_'}}, - write). + end || Route <- Routes]. remove_for_destination(DstName) -> remove_for_destination(DstName, fun delete_forward_routes/1). |
