diff options
Diffstat (limited to 'src/ejabberd_router_sql.erl')
-rw-r--r-- | src/ejabberd_router_sql.erl | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/ejabberd_router_sql.erl b/src/ejabberd_router_sql.erl index 1daa92fb1..e64b6afeb 100644 --- a/src/ejabberd_router_sql.erl +++ b/src/ejabberd_router_sql.erl @@ -27,7 +27,8 @@ %% API -export([init/0, register_route/5, unregister_route/3, find_routes/1, - host_of_route/1, is_my_route/1, is_my_host/1, get_all_routes/0]). + host_of_route/1, is_my_route/1, is_my_host/1, get_all_routes/0, + find_routes/0]). -include("ejabberd.hrl"). -include("logger.hrl"). @@ -124,6 +125,21 @@ get_all_routes() -> [] end. +find_routes() -> + case ejabberd_sql:sql_query( + ?MYNAME, + ?SQL("select @(domain)s, @(server_host)s, @(node)s, @(pid)s, " + "@(local_hint)s from route")) of + {selected, Rows} -> + lists:flatmap( + fun({Domain, ServerHost, Node, Pid, LocalHint}) -> + row_to_route(Domain, {ServerHost, Node, Pid, LocalHint}) + end, Rows); + Err -> + ?ERROR_MSG("failed to select from 'route' table: ~p", [Err]), + [] + end. + %%%=================================================================== %%% Internal functions %%%=================================================================== |