Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2010-04-27 14:33:38 +0400
committerBadlop <badlop@process-one.net>2010-04-27 14:33:38 +0400
commit9820880cd5d93fd38ad347b7fc5e370711d6f7cf (patch)
treebed73fd1ce591aced7e1f32d0d32339f9adcf1e4 /src/ejabberd_c2s.erl
parent8713465df1dcbaf20a78a017c4493ffe42bfb151 (diff)
Automatic vcard avatar addition in presence (thanks to Igor Goryachev)(EJAB-208)
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r--src/ejabberd_c2s.erl19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 41206fffc..2e5007c69 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1287,6 +1287,25 @@ handle_info(system_shutdown, StateName, StateData) ->
ok
end,
{stop, normal, StateData};
+handle_info({force_update_presence, LUser}, StateName,
+ #state{user = LUser, server = LServer} = StateData) ->
+ NewStateData =
+ case exmpp_presence:is_presence(StateData#state.pres_last) of
+ true ->
+ PresenceEl = ejabberd_hooks:run_fold(
+ c2s_update_presence,
+ LServer,
+ StateData#state.pres_last,
+ [LUser, LServer]),
+ StateData2 = StateData#state{pres_last = PresenceEl},
+ presence_update(StateData2#state.jid,
+ PresenceEl,
+ StateData2),
+ StateData2;
+ false ->
+ StateData
+ end,
+ {next_state, StateName, NewStateData};
handle_info(Info, StateName, StateData) ->
?ERROR_MSG("Unexpected info: ~p", [Info]),
fsm_next_state(StateName, StateData).