diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2011-04-11 14:44:34 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2011-04-11 14:44:34 +0100 |
commit | 3091e5caab4e25e69b54fb4076b868bf15ace255 (patch) | |
tree | be33d3c42b46de0183902a4ca3571fd1fa3c685c | |
parent | 9318a445bc0b501c606899988d8d0d60d21ede54 (diff) | |
download | rabbitmq-server-3091e5caab4e25e69b54fb4076b868bf15ace255.tar.gz |
Remove from all forward routing tables in remove_for_source.
-rw-r--r-- | src/rabbit_binding.erl | 15 |
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). |