diff options
author | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-07-30 15:21:58 +0300 |
---|---|---|
committer | Evgeny Khramtsov <ekhramtsov@process-one.net> | 2019-07-30 15:21:58 +0300 |
commit | b4770815c0b0416c21d01507d2908f94c25b3097 (patch) | |
tree | 9029a28fd2f3381504d3d6244906ae6e45bd80e6 /src/mod_stream_mgmt.erl | |
parent | Fix SQL connections leakage (diff) |
Fix race condition when deleting c2s session record
Diffstat (limited to 'src/mod_stream_mgmt.erl')
-rw-r--r-- | src/mod_stream_mgmt.erl | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mod_stream_mgmt.erl b/src/mod_stream_mgmt.erl index 45c30e161..9786304a5 100644 --- a/src/mod_stream_mgmt.erl +++ b/src/mod_stream_mgmt.erl @@ -276,6 +276,8 @@ c2s_closed(State, _Reason) -> c2s_terminated(#{mgmt_state := resumed, sid := SID, jid := JID} = State, _Reason) -> ?DEBUG("Closing former stream of resumed session for ~s", [jid:encode(JID)]), + {U, S, R} = jid:tolower(JID), + ejabberd_sm:close_session(SID, U, S, R), ejabberd_c2s:bounce_message_queue(SID, JID), {stop, State}; c2s_terminated(#{mgmt_state := MgmtState, mgmt_stanzas_in := In, @@ -653,7 +655,6 @@ inherit_session_state(#{user := U, server := S, mgmt_stanzas_in => NumStanzasIn, mgmt_stanzas_out => NumStanzasOut, mgmt_state => active}, - ejabberd_sm:close_session(OldSID, U, S, R), State3 = ejabberd_c2s:open_session(State2), ejabberd_c2s:stop(OldPID), {ok, State3}; |