diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2011-03-21 10:58:26 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2011-03-21 10:58:26 +0000 |
commit | d3d65e83422b981f60ad1a9c59be8e80c0141a73 (patch) | |
tree | f202e4ddbc3fabc9ebb3f6bb27a553df750cbdc4 | |
parent | 0f23637e28f62110bab3bff3715d5fa8f5dc4c17 (diff) | |
parent | 8449616cc83d64477ad4fc69921c1e227f7be3a1 (diff) | |
download | rabbitmq-server-d3d65e83422b981f60ad1a9c59be8e80c0141a73.tar.gz |
Merge bug 23963 (rabbit_exchange_type:delete/3 only called for non-autodeleted exchanges)
-rw-r--r-- | src/rabbit_binding.erl | 23 |
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), |