diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2010-12-28 15:09:15 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2010-12-28 15:12:33 +0300 |
commit | a4728d14d5b565bd22ef8a777534bdf15d95b180 (patch) | |
tree | abf96eca6eb63ad3e0ca16289539c665075c8535 /src/ejabberd_c2s.erl | |
parent | f2925d8efc639bd9094720e0eec06003839b4f66 (diff) |
Change c2s state before offline messages resending
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r-- | src/ejabberd_c2s.erl | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 53f02507f..8d2e6e39f 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -1772,35 +1772,32 @@ presence_update(From, Packet, StateData) -> FromUnavail = (StateData#state.pres_last == undefined), ?DEBUG("from unavail = ~p~n", [FromUnavail]), NewState = + NewStateData = StateData#state{pres_last = Packet, + pres_timestamp = Timestamp}, if FromUnavail -> ejabberd_hooks:run(user_available_hook, - StateData#state.server, - [StateData#state.jid]), + NewStateData#state.server, + [NewStateData#state.jid]), if NewPriority >= 0 -> - resend_offline_messages(StateData), - resend_subscription_requests(StateData); + resend_offline_messages(NewStateData), + resend_subscription_requests(NewStateData); true -> ok end, - presence_broadcast_first( - From, StateData#state{pres_last = Packet, - pres_timestamp = Timestamp - }, Packet); + presence_broadcast_first(From, NewStateData, Packet); true -> - presence_broadcast_to_trusted(StateData, + presence_broadcast_to_trusted(NewStateData, From, - StateData#state.pres_f, - StateData#state.pres_a, + NewStateData#state.pres_f, + NewStateData#state.pres_a, Packet), if OldPriority < 0, NewPriority >= 0 -> - resend_offline_messages(StateData); + resend_offline_messages(NewStateData); true -> ok end, - StateData#state{pres_last = Packet, - pres_timestamp = Timestamp - } + NewStateData end, NewState end. |