summaryrefslogtreecommitdiff
path: root/src/mod_disco.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-06-28 10:37:20 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-06-28 10:37:20 +0300
commit8879d1d533cdea83efebad54b37e22f849092ac1 (patch)
treee532bfbca6e70d5e8e734523ac108de9859096d0 /src/mod_disco.erl
parentWork-around against public_key incompatibility introduced in OTP21 (diff)
Avoid code duplication when checking presence subscription
Diffstat (limited to 'src/mod_disco.erl')
-rw-r--r--src/mod_disco.erl21
1 files changed, 3 insertions, 18 deletions
diff --git a/src/mod_disco.erl b/src/mod_disco.erl
index 17013455..08299ae2 100644
--- a/src/mod_disco.erl
+++ b/src/mod_disco.erl
@@ -263,7 +263,7 @@ process_sm_iq_items(#iq{type = set, lang = Lang} = IQ) ->
process_sm_iq_items(#iq{type = get, lang = Lang,
from = From, to = To,
sub_els = [#disco_items{node = Node}]} = IQ) ->
- case is_presence_subscribed(From, To) of
+ case mod_roster:is_subscribed(From, To) of
true ->
Host = To#jid.lserver,
case ejabberd_hooks:run_fold(disco_sm_items, Host,
@@ -290,7 +290,7 @@ get_sm_items(Acc, From,
{result, Its} -> Its;
empty -> []
end,
- Items1 = case is_presence_subscribed(From, To) of
+ Items1 = case mod_roster:is_subscribed(From, To) of
true -> get_user_resources(User, Server);
_ -> []
end,
@@ -308,21 +308,6 @@ get_sm_items(empty, From, To, _Node, Lang) ->
{error, xmpp:err_not_allowed(Txt, Lang)}
end.
--spec is_presence_subscribed(jid(), jid()) -> boolean().
-is_presence_subscribed(#jid{luser = User, lserver = Server},
- #jid{luser = User, lserver = Server}) -> true;
-is_presence_subscribed(#jid{luser = FromUser, lserver = FromServer},
- #jid{luser = ToUser, lserver = ToServer}) ->
- lists:any(fun (#roster{jid = {SubUser, SubServer, _}, subscription = Sub})
- when FromUser == SubUser, FromServer == SubServer,
- Sub /= none ->
- true;
- (_RosterEntry) ->
- false
- end,
- ejabberd_hooks:run_fold(roster_get, ToServer, [],
- [{ToUser, ToServer}])).
-
-spec process_sm_iq_info(iq()) -> iq().
process_sm_iq_info(#iq{type = set, lang = Lang} = IQ) ->
Txt = <<"Value 'set' of 'type' attribute is not allowed">>,
@@ -330,7 +315,7 @@ process_sm_iq_info(#iq{type = set, lang = Lang} = IQ) ->
process_sm_iq_info(#iq{type = get, lang = Lang,
from = From, to = To,
sub_els = [#disco_info{node = Node}]} = IQ) ->
- case is_presence_subscribed(From, To) of
+ case mod_roster:is_subscribed(From, To) of
true ->
Host = To#jid.lserver,
Identity = ejabberd_hooks:run_fold(disco_sm_identity,