summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-02-17 11:07:58 +0000
committerSimon MacMullen <simon@rabbitmq.com>2014-02-17 11:07:58 +0000
commit07c42e02be961a83762c8677bf25f6ba74597854 (patch)
treea33ecf057cb95a7e51978362428bac3f1989a996 /src
parentcd88a6baa8678be738d8d2867a7fe1ba442f796c (diff)
downloadrabbitmq-server-git-07c42e02be961a83762c8677bf25f6ba74597854.tar.gz
Don't call InnerFun and remove/3 if the binding was not there.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_binding.erl16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 11e6bd38f6..ff950cc73a 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -200,13 +200,15 @@ remove(Binding, InnerFun) ->
binding_action(
Binding,
fun (Src, Dst, B) ->
- case mnesia:read(rabbit_route, B, write) =:= [] andalso
- mnesia:read(rabbit_durable_route, B, write) =/= [] of
- true -> rabbit_misc:const({error, binding_not_found});
- false -> case InnerFun(Src, Dst) of
- ok -> remove(Src, Dst, B);
- {error, _} = Err -> rabbit_misc:const(Err)
- end
+ case mnesia:read(rabbit_route, B, write) of
+ [] -> case mnesia:read(rabbit_durable_route, B, write) of
+ [] -> rabbit_misc:const(ok);
+ _ -> rabbit_misc:const({error, binding_not_found})
+ end;
+ _ -> case InnerFun(Src, Dst) of
+ ok -> remove(Src, Dst, B);
+ {error, _} = Err -> rabbit_misc:const(Err)
+ end
end
end, fun absent_errs_only/1).