Merge pull request #12075 from keynslug/fix/EMQX-11474/function-clause
fix(channel): expect there's no session yet on disconnect
This commit is contained in:
commit
6eba082992
|
@ -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
|
||||
|
||||
|
|
|
@ -606,8 +606,8 @@ maybe_mock_impl_mod({Mock, _State}) when is_atom(Mock) ->
|
|||
Mock.
|
||||
-else.
|
||||
-spec maybe_mock_impl_mod(_Session) -> no_return().
|
||||
maybe_mock_impl_mod(_) ->
|
||||
error(noimpl).
|
||||
maybe_mock_impl_mod(Session) ->
|
||||
error(noimpl, [Session]).
|
||||
-endif.
|
||||
|
||||
-spec choose_impl_mod(conninfo()) -> module().
|
||||
|
|
Loading…
Reference in New Issue