Преглед изворни кода

Remove will message when received disconnect packet with reason code 0x00

周子博 пре 7 година
родитељ
комит
59798762a9
1 измењених фајлова са 3 додато и 1 уклоњено
  1. 3 1
      src/emqx_protocol.erl

+ 3 - 1
src/emqx_protocol.erl

@@ -412,12 +412,14 @@ process_packet(?DISCONNECT_PACKET(?RC_SUCCESS, #{'Session-Expiry-Interval' := In
     case Interval =/= 0 andalso OldInterval =:= 0 of
         true -> 
             deliver({disconnect, ?RC_PROTOCOL_ERROR}, PState),
-            {error, protocol_error, PState};
+            {error, protocol_error, PState#pstate{will_msg = undefined}};
         false -> 
             emqx_session:update_expiry_interval(SPid, Interval),
             %% Clean willmsg
             {stop, normal, PState#pstate{will_msg = undefined}}
     end;
+process_packet(?DISCONNECT_PACKET(?RC_SUCCESS), PState) ->
+    {stop, normal, PState#pstate{will_msg = undefined}};
 process_packet(?DISCONNECT_PACKET(_), PState) ->
     {stop, normal, PState}.