Fix duplicate send pubrec packet

This commit is contained in:
turtled 2017-04-18 16:44:19 +08:00
parent 9157f824e5
commit aa360d4378
1 changed files with 8 additions and 3 deletions

View File

@ -733,9 +733,14 @@ acked(puback, PacketId, State = #state{client_id = ClientId,
acked(pubrec, PacketId, State = #state{client_id = ClientId, acked(pubrec, PacketId, State = #state{client_id = ClientId,
username = Username, username = Username,
inflight = Inflight}) -> inflight = Inflight}) ->
{publish, Msg, _Ts} = Inflight:lookup(PacketId), case Inflight:lookup(PacketId) of
emqttd_hooks:run('message.acked', [ClientId, Username], Msg), {publish, Msg, _Ts} ->
State#state{inflight = Inflight:update(PacketId, {pubrel, PacketId, os:timestamp()})}; 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}) -> acked(pubcomp, PacketId, State = #state{inflight = Inflight}) ->
State#state{inflight = Inflight:delete(PacketId)}. State#state{inflight = Inflight:delete(PacketId)}.