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 | 6413bd76c15d871b502cd6489547c0b5b3019238 (patch) | |
| tree | f202e4ddbc3fabc9ebb3f6bb27a553df750cbdc4 /src | |
| parent | 782e3378687073d89ac4fd855713c43c1d5bda95 (diff) | |
| parent | c528d4702492171370163473d10e164e07d718e6 (diff) | |
| download | rabbitmq-server-git-6413bd76c15d871b502cd6489547c0b5b3019238.tar.gz | |
Merge bug 23963 (rabbit_exchange_type:delete/3 only called for non-autodeleted exchanges)
Diffstat (limited to 'src')
| -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 7ddb781412..6167790e58 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), |
