From: Evgeny Khramtsov Date: Fri, 19 Apr 2019 12:42:24 +0000 (+0300) Subject: Correctly support cache tags in ejabberd_auth X-Git-Tag: 19.05~83 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7c45b52c86fb2673f5faa47c8cc163af938b09b1;p=ejabberd Correctly support cache tags in ejabberd_auth --- diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl index dfe3f534a..7d6591135 100644 --- a/src/ejabberd_auth.erl +++ b/src/ejabberd_auth.erl @@ -613,7 +613,10 @@ db_user_exists(User, Server, Mod) -> case Mod:user_exists(User, Server) of true -> {ok, exists}; false -> error; - {error, _} = Err -> Err + {error, _} = Err -> Err; + {CacheTag, true} -> {CacheTag, {ok, exists}}; + {CacheTag, false} -> {CacheTag, error}; + {_, {error, _}} = Err -> Err end end) of {ok, _} -> @@ -643,10 +646,10 @@ db_check_password(User, AuthzId, Server, ProvidedPassword, fun() -> case Mod:check_password( User, AuthzId, Server, ProvidedPassword) of - true -> - {ok, ProvidedPassword}; - false -> - error + true -> {ok, ProvidedPassword}; + false -> error; + {CacheTag, true} -> {CacheTag, {ok, ProvidedPassword}}; + {CacheTag, false} -> {CacheTag, error} end end) of {ok, _} ->