Merge pull request #1004 from emqtt/develop
Fix crash caused by duplicated PUBREC packet
This commit is contained in:
commit
3c9cde59c7
2
Makefile
2
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
|
||||
|
||||
|
|
|
@ -726,16 +726,26 @@ 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,
|
||||
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(warning, "Duplicated PUBREC Packet: ~p", [PacketId], State),
|
||||
State
|
||||
end;
|
||||
|
||||
acked(pubcomp, PacketId, State = #state{inflight = Inflight}) ->
|
||||
State#state{inflight = Inflight:delete(PacketId)}.
|
||||
|
|
Loading…
Reference in New Issue