diff options
| author | Ben Hood <0x6e6562@gmail.com> | 2008-10-10 21:59:06 +0100 |
|---|---|---|
| committer | Ben Hood <0x6e6562@gmail.com> | 2008-10-10 21:59:06 +0100 |
| commit | e71f140b9fc48399bfd089e9eedd05c97da95c6d (patch) | |
| tree | 6766e8398eaf7261b3e0e947da81ea928cb3efa5 | |
| parent | 252aaf6657d88d9a68b5cad3fbfa6348eae5cc5a (diff) | |
| download | rabbitmq-server-git-e71f140b9fc48399bfd089e9eedd05c97da95c6d.tar.gz | |
Changed select for has_bindings into a continuation
| -rw-r--r-- | src/rabbit_exchange.erl | 11 |
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) -> |
