From 0edba763fbcef233c2fe7b5b33895fac370226c8 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Sun, 26 Apr 2015 16:32:03 +0200 Subject: [PATCH] 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. --- src/mod_disco.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mod_disco.erl b/src/mod_disco.erl index 4231df68d..724b9b957 100644 --- a/src/mod_disco.erl +++ b/src/mod_disco.erl @@ -352,6 +352,9 @@ get_sm_items(empty, From, To, _Node, _Lang) -> _ -> {error, ?ERR_NOT_ALLOWED} end. +is_presence_subscribed(#jid{luser = User, + lserver = Server}, + #jid{luser = User, lserver = Server}) -> true; is_presence_subscribed(#jid{luser = User, lserver = Server}, #jid{luser = LUser, lserver = LServer}) -> @@ -363,8 +366,7 @@ is_presence_subscribed(#jid{luser = User, end end, ejabberd_hooks:run_fold(roster_get, LServer, [], - [{LUser, LServer}])) - orelse User == LUser andalso Server == LServer. + [{LUser, LServer}])). process_sm_iq_info(From, To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ) ->