]> granicus.if.org Git - ejabberd/commitdiff
Change c2s state before offline messages resending
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Tue, 28 Dec 2010 12:09:15 +0000 (21:09 +0900)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Tue, 28 Dec 2010 12:09:15 +0000 (21:09 +0900)
src/ejabberd_c2s.erl

index 6dbcd778a49d1d00434095175cf34e72b0d77210..52e4fa378acfd4abed208fe1abd6062e89152b01 100644 (file)
@@ -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.