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:
Andrew Mayorov 2023-12-02 14:32:50 +03:00 committed by GitHub
commit 6eba082992
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 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

View File

@ -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().