From f19faae4712fa7b8c528a278453c3454da8c0722 Mon Sep 17 00:00:00 2001 From: anlicheng Date: Mon, 18 Sep 2023 18:28:48 +0800 Subject: [PATCH] fix auth --- apps/iot/src/iot_host.erl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/iot/src/iot_host.erl b/apps/iot/src/iot_host.erl index 14df359..20dcea5 100644 --- a/apps/iot/src/iot_host.erl +++ b/apps/iot/src/iot_host.erl @@ -230,17 +230,21 @@ handle_call({publish_message, _, _, _}, _From, State) -> {reply, {error, <<"主机状态错误,发送命令失败"/utf8>>}, State}; %% 关闭授权 -handle_call({activate, Auth}, _From, State = #state{uuid = UUID, host_id = HostId, has_session = false}) -> +handle_call({activate, Auth}, _From, State = #state{uuid = UUID, host_id = HostId, monitor_ref = MRef, channel_pid = ChannelPid, has_session = false}) -> case Auth of true -> ok; false -> + %% channel也是要删除的 + is_reference(MRef) andalso erlang:demonitor(MRef), + is_pid(ChannelPid) andalso ws_channel:stop(ChannelPid, closed), + {ok, _} = host_bo:change_status(UUID, ?HOST_OFFLINE), report_event(UUID, ?HOST_OFFLINE), change_devices_status(HostId, ?DEVICE_UNKNOWN) end, - {reply, ok, State}; + {reply, ok, State#state{monitor_ref = undefined, channel_pid = undefined}}; handle_call({activate, Auth}, _From, State = #state{host_id = HostId, uuid = UUID, monitor_ref = MRef, channel_pid = ChannelPid, has_session = true}) -> case Auth of