aboutsummaryrefslogtreecommitdiff
path: root/src/mod_caps.erl
diff options
context:
space:
mode:
authorChristophe Romain <chris.romain@gmail.com>2015-07-24 12:07:22 +0200
committerChristophe Romain <chris.romain@gmail.com>2015-07-24 12:07:22 +0200
commitd48101774673c35a295fb22b8042d5a5acf4964e (patch)
treef1898c00b2b60da7e379301e9b6fd13b9c06e12e /src/mod_caps.erl
parentProvide command for ODBC's convert_to_scram (diff)
parentTrigger PEP notifications on CAPS updates (diff)
Merge pull request #642 from weiss/pep-on-caps-update
Also send PEP notifications when local contact updates CAPS
Diffstat (limited to 'src/mod_caps.erl')
-rw-r--r--src/mod_caps.erl39
1 files changed, 18 insertions, 21 deletions
diff --git a/src/mod_caps.erl b/src/mod_caps.erl
index 4d166ce70..6d647908c 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