summaryrefslogtreecommitdiff
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
commit3091e5caab4e25e69b54fb4076b868bf15ace255 (patch)
treebe33d3c42b46de0183902a4ca3571fd1fa3c685c
parent9318a445bc0b501c606899988d8d0d60d21ede54 (diff)
downloadrabbitmq-server-3091e5caab4e25e69b54fb4076b868bf15ace255.tar.gz
Remove from all forward routing tables in remove_for_source.
-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 3c835b56..016e8707 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).