From aa360d4378467159f049d17c59d7467ddb4a8b69 Mon Sep 17 00:00:00 2001 From: turtled Date: Tue, 18 Apr 2017 16:44:19 +0800 Subject: [PATCH 1/4] Fix duplicate send pubrec packet --- src/emqttd_session.erl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/emqttd_session.erl b/src/emqttd_session.erl index 85b027781..5e9dbd4ee 100644 --- a/src/emqttd_session.erl +++ b/src/emqttd_session.erl @@ -733,9 +733,14 @@ acked(puback, PacketId, State = #state{client_id = ClientId, acked(pubrec, PacketId, State = #state{client_id = ClientId, username = Username, inflight = Inflight}) -> - {publish, Msg, _Ts} = Inflight:lookup(PacketId), - emqttd_hooks:run('message.acked', [ClientId, Username], Msg), - State#state{inflight = Inflight:update(PacketId, {pubrel, PacketId, os:timestamp()})}; + case Inflight:lookup(PacketId) of + {publish, Msg, _Ts} -> + emqttd_hooks:run('message.acked', [ClientId, Username], Msg), + State#state{inflight = Inflight:update(PacketId, {pubrel, PacketId, os:timestamp()})}; + {pubrel, PacketId, _Ts} -> + ?LOG(error, "~p packet_id:~p, duplicate send pubrec packet", [ClientId, PacketId], State), + State + end; acked(pubcomp, PacketId, State = #state{inflight = Inflight}) -> State#state{inflight = Inflight:delete(PacketId)}. From 9d3676884ca53206b93c43219891108c34e840c8 Mon Sep 17 00:00:00 2001 From: turtled Date: Tue, 18 Apr 2017 17:19:04 +0800 Subject: [PATCH 2/4] Fix duplicate send pubrec packet --- src/emqttd_session.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emqttd_session.erl b/src/emqttd_session.erl index 5e9dbd4ee..d9ba581e9 100644 --- a/src/emqttd_session.erl +++ b/src/emqttd_session.erl @@ -738,7 +738,7 @@ acked(pubrec, PacketId, State = #state{client_id = ClientId, emqttd_hooks:run('message.acked', [ClientId, Username], Msg), State#state{inflight = Inflight:update(PacketId, {pubrel, PacketId, os:timestamp()})}; {pubrel, PacketId, _Ts} -> - ?LOG(error, "~p packet_id:~p, duplicate send pubrec packet", [ClientId, PacketId], State), + ?LOG(warning, "Duplicated PUBREC Packet: ~p", [PacketId], State), State end; From 7ca6cbadcf5404c15b66732acfafe42e28e77741 Mon Sep 17 00:00:00 2001 From: turtled Date: Tue, 18 Apr 2017 17:32:00 +0800 Subject: [PATCH 3/4] Duplicated PUBACK Packet --- src/emqttd_session.erl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/emqttd_session.erl b/src/emqttd_session.erl index d9ba581e9..65d773e0d 100644 --- a/src/emqttd_session.erl +++ b/src/emqttd_session.erl @@ -726,9 +726,14 @@ await(Msg = #mqtt_message{pktid = PacketId}, acked(puback, PacketId, State = #state{client_id = ClientId, username = Username, inflight = Inflight}) -> - {publish, Msg, _Ts} = Inflight:lookup(PacketId), - emqttd_hooks:run('message.acked', [ClientId, Username], Msg), - State#state{inflight = Inflight:delete(PacketId)}; + case Inflight:lookup(PacketId) of + {publish, Msg, _Ts} -> + emqttd_hooks:run('message.acked', [ClientId, Username], Msg), + State#state{inflight = Inflight:delete(PacketId)}; + _ -> + ?LOG(warning, "Duplicated PUBACK Packet: ~p", [PacketId], State), + State + end; acked(pubrec, PacketId, State = #state{client_id = ClientId, username = Username, From 6a14c7c1b9bb55d946742dbf2e172699b5770fd5 Mon Sep 17 00:00:00 2001 From: huangdan Date: Thu, 20 Apr 2017 09:48:34 +0800 Subject: [PATCH 4/4] Version 2.1.2 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 69347e2ae..054a59467 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ PROJECT = emqttd PROJECT_DESCRIPTION = Erlang MQTT Broker -PROJECT_VERSION = 2.1.1 +PROJECT_VERSION = 2.1.2 DEPS = goldrush gproc lager esockd mochiweb pbkdf2 lager_syslog