mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-22 17:28:25 +01:00
Fix race condition when deleting c2s session record
This commit is contained in:
parent
209f5d32e1
commit
b4770815c0
@ -276,6 +276,8 @@ c2s_closed(State, _Reason) ->
|
|||||||
c2s_terminated(#{mgmt_state := resumed, sid := SID, jid := JID} = State, _Reason) ->
|
c2s_terminated(#{mgmt_state := resumed, sid := SID, jid := JID} = State, _Reason) ->
|
||||||
?DEBUG("Closing former stream of resumed session for ~s",
|
?DEBUG("Closing former stream of resumed session for ~s",
|
||||||
[jid:encode(JID)]),
|
[jid:encode(JID)]),
|
||||||
|
{U, S, R} = jid:tolower(JID),
|
||||||
|
ejabberd_sm:close_session(SID, U, S, R),
|
||||||
ejabberd_c2s:bounce_message_queue(SID, JID),
|
ejabberd_c2s:bounce_message_queue(SID, JID),
|
||||||
{stop, State};
|
{stop, State};
|
||||||
c2s_terminated(#{mgmt_state := MgmtState, mgmt_stanzas_in := In,
|
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_in => NumStanzasIn,
|
||||||
mgmt_stanzas_out => NumStanzasOut,
|
mgmt_stanzas_out => NumStanzasOut,
|
||||||
mgmt_state => active},
|
mgmt_state => active},
|
||||||
ejabberd_sm:close_session(OldSID, U, S, R),
|
|
||||||
State3 = ejabberd_c2s:open_session(State2),
|
State3 = ejabberd_c2s:open_session(State2),
|
||||||
ejabberd_c2s:stop(OldPID),
|
ejabberd_c2s:stop(OldPID),
|
||||||
{ok, State3};
|
{ok, State3};
|
||||||
|
Loading…
Reference in New Issue
Block a user