diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-03-03 21:09:27 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-03-03 21:09:27 +0300 |
commit | 63dba3fd640c096c5e7956b8d910c55ecdb194d2 (patch) | |
tree | b17fb85d04da9da05c950dc03dfabcf251cddf59 /src/ejabberd_auth.erl | |
parent | Let a MUC room to route presences from its bare JID (diff) | |
parent | Revert "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.erl | 22 |
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 -> |