diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-04-14 20:34:00 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-04-14 20:34:00 +0300 |
commit | d110cbb6e28e9aa906881293d30ba22255848985 (patch) | |
tree | 524b1c82259770d660a55621325b33dcfd8182e5 /src/ejabberd_router_redis.erl | |
parent | Don'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.erl | 21 |
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) -> |