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)),