diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2010-10-03 16:02:50 +1000 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2010-10-03 16:02:50 +1000 |
commit | 5ea909885eb5f611d2926cd7f3fc6f6d6fd4e09f (patch) | |
tree | 9e05b7dc4a329625def9cc2f910d6d3c7cb1614e | |
parent | new CAPS processing (diff) |
call caps hook when caps is changed
-rw-r--r-- | src/mod_caps.erl | 10 |
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 |