From b8cb930c89feeb5280873f5f6810029f870049b8 Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Thu, 8 Apr 2021 23:03:28 +0800 Subject: [PATCH] fix(mqtt_sn): handle disconnect msg in asleep state --- apps/emqx_sn/src/emqx_sn_gateway.erl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/emqx_sn/src/emqx_sn_gateway.erl b/apps/emqx_sn/src/emqx_sn_gateway.erl index 800fa17ba..29c03384d 100644 --- a/apps/emqx_sn/src/emqx_sn_gateway.erl +++ b/apps/emqx_sn/src/emqx_sn_gateway.erl @@ -390,7 +390,7 @@ asleep(cast, {incoming, ?SN_DISCONNECT_MSG(Duration)}, State) -> ok = send_message(?SN_DISCONNECT_MSG(undefined), State), case Duration of undefined -> - handle_incoming(?PACKET(?DISCONNECT), State); + handle_incoming(?DISCONNECT_PACKET(), State); _Other -> goto_asleep_state(Duration, State) end; @@ -548,6 +548,9 @@ handle_event(info, asleep_timeout, StateName, State) -> ?LOG(debug, "asleep timer timeout on StateName=~p, ignore it", [StateName], State), {keep_state, State}; +handle_event(cast, {close, Reason}, _StateName, State) -> + stop(Reason, State); + handle_event(cast, {event, connected}, _StateName, State = #state{channel = Channel}) -> ClientId = emqx_channel:info(clientid, Channel), emqx_cm:insert_channel_info(ClientId, info(State), stats(State)),