summaryrefslogtreecommitdiff
path: root/src/ejabberd_router_redis.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-14 20:34:00 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-14 20:34:00 +0300
commitd110cbb6e28e9aa906881293d30ba22255848985 (patch)
tree524b1c82259770d660a55621325b33dcfd8182e5 /src/ejabberd_router_redis.erl
parentDon't forget to disconnect (diff)
Fix ejabberd_router:is_my_route/1
Diffstat (limited to 'src/ejabberd_router_redis.erl')
-rw-r--r--src/ejabberd_router_redis.erl21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/ejabberd_router_redis.erl b/src/ejabberd_router_redis.erl
index 2b02a759..03581a86 100644
--- a/src/ejabberd_router_redis.erl
+++ b/src/ejabberd_router_redis.erl
@@ -38,6 +38,7 @@
-record(state, {}).
-define(ROUTES_KEY, <<"ejabberd:routes">>).
+-define(DOMAINS_KEY, <<"ejabberd:domains">>).
%%%===================================================================
%%% API
@@ -61,7 +62,12 @@ register_route(Domain, ServerHost, LocalHint, _, Pid) ->
case ejabberd_redis:multi(
fun() ->
ejabberd_redis:hset(DomKey, PidKey, T),
- ejabberd_redis:sadd(?ROUTES_KEY, [Domain])
+ ejabberd_redis:sadd(?DOMAINS_KEY, [Domain]),
+ if Domain /= ServerHost ->
+ ejabberd_redis:sadd(?ROUTES_KEY, [Domain]);
+ true ->
+ ok
+ end
end) of
{ok, _} ->
ok;
@@ -80,7 +86,8 @@ unregister_route(Domain, _, Pid) ->
{ok, _} = ejabberd_redis:multi(
fun() ->
ejabberd_redis:del([DomKey]),
- ejabberd_redis:srem(?ROUTES_KEY, [Domain])
+ ejabberd_redis:srem(?ROUTES_KEY, [Domain]),
+ ejabberd_redis:srem(?DOMAINS_KEY, [Domain])
end),
ok;
true ->
@@ -110,6 +117,14 @@ get_all_routes() ->
{error, db_failure}
end.
+get_all_domains() ->
+ case ejabberd_redis:smembers(?DOMAINS_KEY) of
+ {ok, Domains} ->
+ {ok, Domains};
+ _ ->
+ {error, db_failure}
+ end.
+
%%%===================================================================
%%% gen_server callbacks
%%%===================================================================
@@ -147,7 +162,7 @@ clean_table() ->
end, find_routes()).
find_routes() ->
- case get_all_routes() of
+ case get_all_domains() of
{ok, Domains} ->
lists:flatmap(
fun(Domain) ->