fix(channel): expect there's no session yet on disconnect
This commit is contained in:
parent
cce474ce98
commit
6b17920fea
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue