From 9029ee29d33cfa07acfe98d6d7b52b4dfbbe9d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=AD=90=E5=8D=9A?= <349832309@qq.com> Date: Wed, 5 Sep 2018 18:03:28 +0800 Subject: [PATCH] Drop will msg when receive the DISCONNECT packet whose reason code is equal to 0x00 --- src/emqx_protocol.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/emqx_protocol.erl b/src/emqx_protocol.erl index ec104799e..013fa3c41 100644 --- a/src/emqx_protocol.erl +++ b/src/emqx_protocol.erl @@ -396,9 +396,15 @@ process_packet(?UNSUBSCRIBE_PACKET(PacketId, Properties, RawTopicFilters), process_packet(?PACKET(?PINGREQ), PState) -> send(?PACKET(?PINGRESP), PState); -process_packet(?PACKET(?DISCONNECT), PState) -> +process_packet(?DISCONNECT_PACKET(16#00), PState) -> %% Clean willmsg - {stop, normal, PState#pstate{will_msg = undefined}}. + {stop, normal, PState#pstate{will_msg = undefined}}; +process_packet(?DISCONNECT_PACKET(_), PState) -> + {stop, normal, PState}; +process_packet(Packet = ?PACKET(?DISCONNECT), PState) -> + if Packet#mqtt_packet.variable =:= undefined -> + {stop, normal, PState#pstate{will_msg = undefined}} + end. %%------------------------------------------------------------------------------ %% ConnAck --> Client