mod_disco: Omit 'roster_get' call if possible

As a small optimization, avoid running the 'roster_get' hook in the
(common) case where a client requests service discovery information for
its own bare JID.
This commit is contained in:
Holger Weiss 2015-04-26 16:32:03 +02:00
parent 50f35f1b07
commit 0edba763fb
1 changed files with 4 additions and 2 deletions

View File

@ -352,6 +352,9 @@ get_sm_items(empty, From, To, _Node, _Lang) ->
_ -> {error, ?ERR_NOT_ALLOWED} _ -> {error, ?ERR_NOT_ALLOWED}
end. end.
is_presence_subscribed(#jid{luser = User,
lserver = Server},
#jid{luser = User, lserver = Server}) -> true;
is_presence_subscribed(#jid{luser = User, is_presence_subscribed(#jid{luser = User,
lserver = Server}, lserver = Server},
#jid{luser = LUser, lserver = LServer}) -> #jid{luser = LUser, lserver = LServer}) ->
@ -363,8 +366,7 @@ is_presence_subscribed(#jid{luser = User,
end end
end, end,
ejabberd_hooks:run_fold(roster_get, LServer, [], ejabberd_hooks:run_fold(roster_get, LServer, [],
[{LUser, LServer}])) [{LUser, LServer}])).
orelse User == LUser andalso Server == LServer.
process_sm_iq_info(From, To, process_sm_iq_info(From, To,
#iq{type = Type, lang = Lang, sub_el = SubEl} = IQ) -> #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ) ->