summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Hood <0x6e6562@gmail.com>2008-10-10 21:59:06 +0100
committerBen Hood <0x6e6562@gmail.com>2008-10-10 21:59:06 +0100
commite71f140b9fc48399bfd089e9eedd05c97da95c6d (patch)
tree6766e8398eaf7261b3e0e947da81ea928cb3efa5 /src
parent252aaf6657d88d9a68b5cad3fbfa6348eae5cc5a (diff)
downloadrabbitmq-server-git-e71f140b9fc48399bfd089e9eedd05c97da95c6d.tar.gz
Changed select for has_bindings into a continuation
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_exchange.erl11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index ea364d2fb6..8171803906 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -270,10 +270,15 @@ has_bindings(ExchangeName) ->
MatchHead = #route{binding = #binding{exchange_name = ExchangeName,
queue_name = '$1',
key = '_'}},
- case mnesia:select(route, [{MatchHead, [], ['$1']}], 2, read) of
+ continue(fun() ->
+ mnesia:select(route, [{MatchHead, [], ['$1']}], 1, read)
+ end).
+
+continue(Fun) ->
+ case Fun() of
'$end_of_table' -> false;
- {[], _} -> false;
- _ -> true
+ {[], Cont} -> continue(fun() -> mnesia:select(Cont) end);
+ _ -> true
end.
call_with_exchange(Exchange, Fun) ->