]> granicus.if.org Git - ejabberd/commitdiff
XEP-0198: Log message when waiting for resumption
authorHolger Weiss <holger@zedat.fu-berlin.de>
Sun, 4 May 2014 21:08:42 +0000 (23:08 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Sun, 4 May 2014 21:08:42 +0000 (23:08 +0200)
Log an informational message when a session goes into the pending state
(waiting for resumption) after the connection was lost.  Administrators
may well be interested in this state change when looking into issues.

src/ejabberd_c2s.erl

index ba8c6eab66d546636d3081a19cc47ee9b38881c1..9f7ab4b89fcbd448355147d369160d64da4638f3 100644 (file)
@@ -1179,6 +1179,7 @@ session_established(closed, StateData)
     when StateData#state.resume_timeout > 0,
         StateData#state.sm_state == active orelse
         StateData#state.sm_state == pending ->
+    log_pending_state(StateData),
     fsm_next_state(wait_for_resume, StateData#state{sm_state = pending});
 session_established(closed, StateData) ->
     {stop, normal, StateData}.
@@ -1664,6 +1665,7 @@ handle_info({'DOWN', Monitor, _Type, _Object, _Info},
     if StateData#state.resume_timeout > 0,
        StateData#state.sm_state == active orelse
        StateData#state.sm_state == pending ->
+          log_pending_state(StateData),
           fsm_next_state(wait_for_resume, StateData#state{sm_state = pending});
        true ->
           {stop, normal, StateData}
@@ -2785,6 +2787,12 @@ limit_queue_length(#state{jid = JID,
          StateData
     end.
 
+log_pending_state(StateData) when StateData#state.sm_state /= pending ->
+    ?INFO_MSG("Waiting for resumption of stream for ~s",
+             [jlib:jid_to_string(StateData#state.jid)]);
+log_pending_state(_StateData) ->
+    ok.
+
 handle_unacked_stanzas(StateData, F) when StateData#state.sm_state == active;
                                          StateData#state.sm_state == pending ->
     Queue = StateData#state.ack_queue,