summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-03-21 10:58:26 +0000
committerSimon MacMullen <simon@rabbitmq.com>2011-03-21 10:58:26 +0000
commitd3d65e83422b981f60ad1a9c59be8e80c0141a73 (patch)
treef202e4ddbc3fabc9ebb3f6bb27a553df750cbdc4
parent0f23637e28f62110bab3bff3715d5fa8f5dc4c17 (diff)
parent8449616cc83d64477ad4fc69921c1e227f7be3a1 (diff)
downloadrabbitmq-server-d3d65e83422b981f60ad1a9c59be8e80c0141a73.tar.gz
Merge bug 23963 (rabbit_exchange_type:delete/3 only called for non-autodeleted exchanges)
-rw-r--r--src/rabbit_binding.erl23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 7ddb7814..6167790e 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -331,17 +331,18 @@ group_bindings_fold(Fun, SrcName, Acc, Removed, Bindings) ->
group_bindings_fold(Fun, Fun(SrcName, Bindings, Acc), Removed).
maybe_auto_delete(XName, Bindings, Deletions) ->
- case mnesia:read({rabbit_exchange, XName}) of
- [] ->
- add_deletion(XName, {undefined, not_deleted, Bindings}, Deletions);
- [X] ->
- add_deletion(XName, {X, not_deleted, Bindings},
- case rabbit_exchange:maybe_auto_delete(X) of
- not_deleted -> Deletions;
- {deleted, Deletions1} -> combine_deletions(
- Deletions, Deletions1)
- end)
- end.
+ {Entry, Deletions1} =
+ case mnesia:read({rabbit_exchange, XName}) of
+ [] -> {{undefined, not_deleted, Bindings}, Deletions};
+ [X] -> case rabbit_exchange:maybe_auto_delete(X) of
+ not_deleted ->
+ {{X, not_deleted, Bindings}, Deletions};
+ {deleted, Deletions2} ->
+ {{X, deleted, Bindings},
+ combine_deletions(Deletions, Deletions2)}
+ end
+ end,
+ add_deletion(XName, Entry, Deletions1).
delete_forward_routes(Route) ->
ok = mnesia:delete_object(rabbit_route, Route, write),