aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_auth.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-03-03 21:09:27 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-03-03 21:09:27 +0300
commit63dba3fd640c096c5e7956b8d910c55ecdb194d2 (patch)
treeb17fb85d04da9da05c950dc03dfabcf251cddf59 /src/ejabberd_auth.erl
parentLet a MUC room to route presences from its bare JID (diff)
parentRevert "Support for default values in default_room_opts" (diff)
Merge branch 'master' into muc-self-presence
Diffstat (limited to 'src/ejabberd_auth.erl')
-rw-r--r--src/ejabberd_auth.erl22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl
index df75be9eb..861d8f37b 100644
--- a/src/ejabberd_auth.erl
+++ b/src/ejabberd_auth.erl
@@ -526,7 +526,10 @@ db_get_password(User, Server, Mod) ->
UseCache = use_cache(Mod, Server),
case erlang:function_exported(Mod, get_password, 2) of
false when UseCache ->
- ets_cache:lookup(?AUTH_CACHE, {User, Server});
+ case ets_cache:lookup(?AUTH_CACHE, {User, Server}) of
+ {ok, exists} -> error;
+ Other -> Other
+ end;
false ->
error;
true when UseCache ->
@@ -544,7 +547,20 @@ db_user_exists(User, Server, Mod) ->
error ->
case Mod:store_type(Server) of
external ->
- Mod:user_exists(User, Server);
+ case ets_cache:lookup(
+ ?AUTH_CACHE, {User, Server},
+ fun() ->
+ case Mod:user_exists(User, Server) of
+ true -> {ok, exists};
+ false -> error;
+ {error, _} = Err -> Err
+ end
+ end) of
+ {ok, _} ->
+ true;
+ error ->
+ false
+ end;
_ ->
false
end
@@ -568,7 +584,7 @@ db_check_password(User, AuthzId, Server, ProvidedPassword,
false ->
error
end
- end, cache_nodes(Mod, Server)) of
+ end) of
{ok, _} ->
true;
error ->