aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2010-12-28 21:09:15 +0900
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2010-12-28 21:09:15 +0900
commit4c8b034874afb421a948f2dedfda669106ce255c (patch)
tree2cbc37b1e772db98a71245889cb225706f2e1c25 /src
parentMake jlib:ip_to_list safe to use (diff)
Change c2s state before offline messages resending
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_c2s.erl30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 6dbcd778a..52e4fa378 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1733,37 +1733,33 @@ presence_update(From, Packet, StateData) ->
StateData#state.pres_invis,
?DEBUG("from unavail = ~p~n", [FromUnavail]),
NewState =
+ NewStateData = StateData#state{pres_last = Packet,
+ pres_invis = false,
+ 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_invis = false,
- 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_invis = false,
- pres_timestamp = Timestamp
- }
+ NewStateData
end,
NewState
end.