aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_router_sql.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_router_sql.erl')
-rw-r--r--src/ejabberd_router_sql.erl18
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
%%%===================================================================