From db2e47470a1dfd4275d598233221dc183866275f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=AD=90=E5=8D=9A?= <349832309@qq.com> Date: Thu, 25 Oct 2018 16:19:57 +0800 Subject: [PATCH] Fix bugs --- src/emqx_protocol.erl | 22 +++++++++++----------- src/emqx_session.erl | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/emqx_protocol.erl b/src/emqx_protocol.erl index 2c516a534..d981309e4 100644 --- a/src/emqx_protocol.erl +++ b/src/emqx_protocol.erl @@ -281,23 +281,13 @@ process_packet(?CONNECT_PACKET( clean_start = CleanStart, keepalive = Keepalive, properties = ConnProps, - will_props = WillProps, client_id = ClientId, username = Username, password = Password} = Connect), PState) -> %% TODO: Mountpoint... %% Msg -> emqx_mountpoint:mount(MountPoint, Msg) - Connect1 = if - ProtoVer =:= ?MQTT_PROTO_V5 -> - WillDelayInterval = get_property('Will-Delay-Interval', WillProps, 0), - SessionExpiryInterval = get_property('Session-Expiry-Interval', ConnProps, 0), - WillProps1 = set_property('Will-Delay-Interval', erlang:min(SessionExpiryInterval, WillDelayInterval), WillProps), - Connect#mqtt_packet_connect{will_props = WillProps1}; - true -> - Connect - end, - WillMsg = emqx_packet:will_msg(Connect1), + WillMsg = make_will_msg(Connect), PState1 = set_username(Username, PState#pstate{client_id = ClientId, @@ -687,6 +677,16 @@ get_property(_Name, undefined, Default) -> get_property(Name, Props, Default) -> maps:get(Name, Props, Default). +make_will_msg(#mqtt_packet_connect{proto_ver = ProtoVer, + will_props = WillProps} = Connect) -> + emqx_packet:will_msg(if + ProtoVer =:= ?MQTT_PROTO_V5 -> + WillDelayInterval = get_property('Will-Delay-Interval', WillProps, 0), + Connect#mqtt_packet_connect{will_props = set_property('Will-Delay-Interval', WillDelayInterval, WillProps)}; + true -> + Connect + end). + %%------------------------------------------------------------------------------ %% Check Packet %%------------------------------------------------------------------------------ diff --git a/src/emqx_session.erl b/src/emqx_session.erl index 15911ca7f..224b2be82 100644 --- a/src/emqx_session.erl +++ b/src/emqx_session.erl @@ -619,7 +619,7 @@ handle_info({timeout, Timer, emit_stats}, end; handle_info({timeout, Timer, expired}, State = #state{expiry_timer = Timer}) -> ?LOG(info, "expired, shutdown now:(", [], State), - shutdown(expired, State#state{will_msg = undefined}); + shutdown(expired, State); handle_info({timeout, Timer, will_delay}, State = #state{will_msg = WillMsg, will_delay_timer = Timer}) -> send_willmsg(WillMsg),