aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2020-06-05 19:32:35 +0200
committerBadlop <badlop@process-one.net>2020-06-05 19:33:52 +0200
commit7efc208b9e835a3a31537bec5fb57e899058a425 (patch)
tree1d2b20ea13ae70ef7d3db608f4b1d4a0761a7211
parentUpdate 'yconf' dependency (diff)
Handle ets_cache return value in shared roster get_group_opts (#3296)
-rw-r--r--src/mod_shared_roster.erl6
-rw-r--r--src/mod_shared_roster_mnesia.erl2
-rw-r--r--src/mod_shared_roster_sql.erl2
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.