summaryrefslogtreecommitdiff
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
commit4235871a8673282ea4e206071c3de726dd81cc1a (patch)
tree6766e8398eaf7261b3e0e947da81ea928cb3efa5
parentbd1971fc81f53aa0c033698779c8d3ac0c39e6f8 (diff)
downloadrabbitmq-server-4235871a8673282ea4e206071c3de726dd81cc1a.tar.gz
Changed select for has_bindings into a continuation
-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 ea364d2f..81718039 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) ->