summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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.