summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-04-13 14:48:25 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-04-13 14:48:25 +0100
commit054a16a7a73e9fce43959b353a7eb842dd3faab3 (patch)
tree2bbdb0366e53bf2561042caa3f8fd70ea98151ce
parenta58a73ddb279c0a9f0adcc7228bf3f739f2a5d54 (diff)
downloadrabbitmq-server-054a16a7a73e9fce43959b353a7eb842dd3faab3.tar.gz
Simpler remove_for_source.
-rw-r--r--src/rabbit_binding.erl15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 57c766c7..1cb642a7 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).