fix(channel): expect there's no session yet on disconnect

This commit is contained in:
Andrew Mayorov 2023-12-01 11:11:02 +03:00
parent cce474ce98
commit 6b17920fea
No known key found for this signature in database
GPG Key ID: 2837C62ACFBFED5D
1 changed files with 6 additions and 1 deletions

View File

@ -1211,7 +1211,7 @@ handle_info(
) when
ConnState =:= connected orelse ConnState =:= reauthenticating
->
{Intent, Session1} = emqx_session:disconnect(ClientInfo, ConnInfo, Session),
{Intent, Session1} = session_disconnect(ClientInfo, ConnInfo, Session),
Channel1 = ensure_disconnected(Reason, maybe_publish_will_msg(Channel)),
Channel2 = Channel1#channel{session = Session1},
case maybe_shutdown(Reason, Intent, Channel2) of
@ -2191,6 +2191,11 @@ ensure_disconnected(
emqx_cm:mark_channel_disconnected(ChanPid),
Channel#channel{conninfo = NConnInfo, conn_state = disconnected}.
session_disconnect(ClientInfo, ConnInfo, Session) when Session /= undefined ->
emqx_session:disconnect(ClientInfo, ConnInfo, Session);
session_disconnect(_ClientInfo, _ConnInfo, undefined) ->
{shutdown, undefined}.
%%--------------------------------------------------------------------
%% Maybe Publish will msg