summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-04-11 14:44:34 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-04-11 14:44:34 +0100
commit83c2121c7e98632b8927f8b219b0e17cda1b2087 (patch)
treebe33d3c42b46de0183902a4ca3571fd1fa3c685c /src
parent6499a5e952de85ebbb6f437bb724e4f4be540a02 (diff)
downloadrabbitmq-server-git-83c2121c7e98632b8927f8b219b0e17cda1b2087.tar.gz
Remove from all forward routing tables in remove_for_source.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_binding.erl15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 3c835b56e6..016e870733 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -248,11 +248,16 @@ remove_for_source(SrcName) ->
reverse_route(Route), write),
ok = delete_forward_routes(Route),
Route#route.binding
- end || Route <- mnesia:match_object(
- rabbit_route,
- #route{binding = #binding{source = SrcName,
- _ = '_'}},
- write)].
+ 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).
remove_for_destination(DstName) ->
remove_for_destination(DstName, fun delete_forward_routes/1).