summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Hood <0x6e6562@gmail.com>2008-09-29 21:31:21 +0100
committerBen Hood <0x6e6562@gmail.com>2008-09-29 21:31:21 +0100
commit63e6b878a7c10170112f2ea7515395700af21570 (patch)
tree35a4155a96ced1b985d5d0104e0ee6173fef5d72 /src
parentf64385428372fc230421b559c201e2d69b0f7f9e (diff)
downloadrabbitmq-server-git-63e6b878a7c10170112f2ea7515395700af21570.tar.gz
Reverse routes and durable routes now get deleted
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_exchange.erl14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index f825a6d277..53abd5e794 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -296,8 +296,10 @@ route_with_reverse(#route{binding = Binding}) ->
route_with_reverse(Binding);
route_with_reverse(Binding = #binding{}) ->
Route = #route{binding = Binding},
- ReverseRoute = #reverse_route{reverse_binding = reverse_binding(Binding)},
- {Route, ReverseRoute}.
+ {Route, reverse_route(Route)}.
+
+reverse_route(#route{binding = Binding}) ->
+ #reverse_route{reverse_binding = reverse_binding(Binding)}.
reverse_binding(#binding{exchange_name = Exchange,
queue_name = Queue,
@@ -355,6 +357,14 @@ do_internal_delete(ExchangeName, Routes) ->
_ ->
lists:foreach(fun (R) -> ok = mnesia:delete_object(R) end,
Routes),
+ lists:foreach(fun (R) ->
+ ok = mnesia:delete_object(reverse_route(R)) end,
+ Routes),
+ lists:foreach(fun (R) ->
+ ok = mnesia:delete_object(durable_routes,
+ R, write)
+ end,
+ Routes),
ok = mnesia:delete({durable_exchanges, ExchangeName}),
ok = mnesia:delete({exchange, ExchangeName})
end.