Parcourir la source

Fix websocket still send willmsg even after disconnect is received

terry-xiaoyu il y a 6 ans
Parent
commit
0569388f0f
1 fichiers modifiés avec 6 ajouts et 6 suppressions
  1. 6 6
      src/emqx_ws_channel.erl

+ 6 - 6
src/emqx_ws_channel.erl

@@ -296,8 +296,8 @@ websocket_info({binary, Data}, State) ->
 websocket_info({shutdown, Reason}, State) ->
 websocket_info({shutdown, Reason}, State) ->
     shutdown(Reason, State);
     shutdown(Reason, State);
 
 
-websocket_info({stop, Reason}, State) ->
-    {stop, State#state{shutdown = Reason}};
+websocket_info(stop, State) ->
+    {stop, State};
 
 
 websocket_info(Info = {'EXIT', SessionPid, Reason}, State = #state{proto_state = ProtoState}) ->
 websocket_info(Info = {'EXIT', SessionPid, Reason}, State = #state{proto_state = ProtoState}) ->
     case emqx_protocol:session(ProtoState) of
     case emqx_protocol:session(ProtoState) of
@@ -363,12 +363,12 @@ ensure_stats_timer(State) ->
     State.
     State.
 
 
 shutdown(Reason = {shutdown, _}, State) ->
 shutdown(Reason = {shutdown, _}, State) ->
-    self() ! {stop, Reason},
-    {ok, State};
+    self() ! stop,
+    {ok, State#state{shutdown = Reason}};
 shutdown(Reason, State) ->
 shutdown(Reason, State) ->
     %% Fix the issue#2591(https://github.com/emqx/emqx/issues/2591#issuecomment-500278696)
     %% Fix the issue#2591(https://github.com/emqx/emqx/issues/2591#issuecomment-500278696)
-    self() ! {stop, {shutdown, Reason}},
-    {ok, State}.
+    self() ! stop,
+    {ok, State#state{shutdown = {shutdown, Reason}}}.
 
 
 wsock_stats() ->
 wsock_stats() ->
     [{Key, emqx_pd:get_counter(Key)} || Key <- ?SOCK_STATS].
     [{Key, emqx_pd:get_counter(Key)} || Key <- ?SOCK_STATS].