From 0f964142799cd987b612dc2134c7a11573ab80b7 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Tue, 7 Jul 2015 00:24:06 +0200 Subject: Trigger PEP notifications on CAPS updates Let mod_pubsub send last items whenever a contact updates the entity capabilities. This was already done for remote contacts and is now also done for local contacts. --- src/mod_caps.erl | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) (limited to 'src/mod_caps.erl') diff --git a/src/mod_caps.erl b/src/mod_caps.erl index 4d166ce7..6d647908 100644 --- a/src/mod_caps.erl +++ b/src/mod_caps.erl @@ -243,27 +243,24 @@ c2s_presence_in(C2SState, error -> gb_trees:empty() end, Caps = read_caps(Els), - {CapsUpdated, NewRs} = case Caps of - nothing when Insert == true -> {false, Rs}; - _ when Insert == true -> - case gb_trees:lookup(LFrom, Rs) of - {value, Caps} -> {false, Rs}; - none -> - {true, - gb_trees:insert(LFrom, Caps, - Rs)}; - _ -> - {true, - gb_trees:update(LFrom, Caps, Rs)} - end; - _ -> {false, gb_trees:delete_any(LFrom, Rs)} - end, - if CapsUpdated -> - ejabberd_hooks:run(caps_update, To#jid.lserver, - [From, To, - get_features(To#jid.lserver, Caps)]); - true -> ok - end, + NewRs = case Caps of + nothing when Insert == true -> Rs; + _ when Insert == true -> + case gb_trees:lookup(LFrom, Rs) of + {value, Caps} -> Rs; + none -> + ejabberd_hooks:run(caps_add, To#jid.lserver, + [From, To, + get_features(To#jid.lserver, Caps)]), + gb_trees:insert(LFrom, Caps, Rs); + _ -> + ejabberd_hooks:run(caps_update, To#jid.lserver, + [From, To, + get_features(To#jid.lserver, Caps)]), + gb_trees:update(LFrom, Caps, Rs) + end; + _ -> gb_trees:delete_any(LFrom, Rs) + end, ejabberd_c2s:set_aux_field(caps_resources, NewRs, C2SState); true -> C2SState -- cgit v1.2.3