aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mod_caps.erl10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/mod_caps.erl b/src/mod_caps.erl
index 10f2f3414..6c17948bd 100644
--- a/src/mod_caps.erl
+++ b/src/mod_caps.erl
@@ -228,22 +228,24 @@ c2s_presence_in(C2SState, {From, To, {_, _, Attrs, Els}}) ->
gb_trees:empty()
end,
Caps = read_caps(Els),
- {FromUnavail, NewRs} =
+ {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)};
_ ->
- {false, gb_trees:update(LFrom, Caps, Rs)}
+ {true, gb_trees:update(LFrom, Caps, Rs)}
end;
_ ->
{false, gb_trees:delete_any(LFrom, Rs)}
end,
- if FromUnavail ->
- ejabberd_hooks:run(caps_user_available, To#jid.lserver,
+ if CapsUpdated ->
+ ejabberd_hooks:run(caps_user_update, To#jid.lserver,
[From, To, get_features(Caps)]);
true ->
ok