From 7efc208b9e835a3a31537bec5fb57e899058a425 Mon Sep 17 00:00:00 2001 From: Badlop Date: Fri, 5 Jun 2020 19:32:35 +0200 Subject: [PATCH] Handle ets_cache return value in shared roster get_group_opts (#3296) --- src/mod_shared_roster.erl | 6 +++++- src/mod_shared_roster_mnesia.erl | 2 +- src/mod_shared_roster_sql.erl | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mod_shared_roster.erl b/src/mod_shared_roster.erl index 356857d74..69952828f 100644 --- a/src/mod_shared_roster.erl +++ b/src/mod_shared_roster.erl @@ -448,7 +448,7 @@ delete_group(Host, Group) -> get_group_opts(Host1, Group1) -> {Host, Group} = split_grouphost(Host1, Group1), Mod = gen_mod:db_mod(Host, ?MODULE), - case use_cache(Mod, Host) of + Res = case use_cache(Mod, Host) of true -> ets_cache:lookup( ?GROUP_OPTS_CACHE, {Host, Group}, @@ -460,6 +460,10 @@ get_group_opts(Host1, Group1) -> end); false -> Mod:get_group_opts(Host, Group) + end, + case Res of + {ok, Opts} -> Opts; + error -> error end. set_group_opts(Host, Group, Opts) -> diff --git a/src/mod_shared_roster_mnesia.erl b/src/mod_shared_roster_mnesia.erl index 6289a7184..4bc2ab89e 100644 --- a/src/mod_shared_roster_mnesia.erl +++ b/src/mod_shared_roster_mnesia.erl @@ -87,7 +87,7 @@ delete_group(Host, Group) -> get_group_opts(Host, Group) -> case catch mnesia:dirty_read(sr_group, {Group, Host}) of - [#sr_group{opts = Opts}] -> Opts; + [#sr_group{opts = Opts}] -> {ok, Opts}; _ -> error end. diff --git a/src/mod_shared_roster_sql.erl b/src/mod_shared_roster_sql.erl index 2ae90ba21..d415750ad 100644 --- a/src/mod_shared_roster_sql.erl +++ b/src/mod_shared_roster_sql.erl @@ -94,7 +94,7 @@ get_group_opts(Host, Group) -> ?SQL("select @(opts)s from sr_group" " where name=%(Group)s and %(Host)H")) of {selected, [{SOpts}]} -> - mod_shared_roster:opts_to_binary(ejabberd_sql:decode_term(SOpts)); + {ok, mod_shared_roster:opts_to_binary(ejabberd_sql:decode_term(SOpts))}; _ -> error end.