Clear dup flag if message published first (#2337)

This commit is contained in:
tigercl 2019-03-21 10:13:41 +08:00 committed by Gilbert
parent 8a73c62f66
commit 5a401c44fd
2 changed files with 3 additions and 6 deletions

View File

@ -555,7 +555,7 @@ do_publish(Packet = ?PUBLISH_PACKET(QoS, PacketId),
PState = #pstate{session = SPid, mountpoint = MountPoint}) -> PState = #pstate{session = SPid, mountpoint = MountPoint}) ->
Msg = emqx_mountpoint:mount(MountPoint, Msg = emqx_mountpoint:mount(MountPoint,
emqx_packet:to_message(credentials(PState), Packet)), emqx_packet:to_message(credentials(PState), Packet)),
puback(QoS, PacketId, emqx_session:publish(SPid, PacketId, Msg), PState). puback(QoS, PacketId, emqx_session:publish(SPid, PacketId, emqx_message:set_flag(dup, false, Msg)), PState).
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
%% Puback -> Client %% Puback -> Client

View File

@ -941,11 +941,8 @@ enqueue_msg(Msg, State = #state{mqueue = Q, client_id = ClientId, username = Use
%% Deliver %% Deliver
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
redeliver({PacketId, Msg = #message{qos = QoS}}, State) -> redeliver({PacketId, Msg = #message{qos = QoS}}, State) when QoS =/= ?QOS_0 ->
Msg1 = if Msg1 = emqx_message:set_flag(dup, Msg),
QoS =:= ?QOS_2 -> Msg;
true -> emqx_message:set_flag(dup, Msg)
end,
do_deliver(PacketId, Msg1, State); do_deliver(PacketId, Msg1, State);
redeliver({pubrel, PacketId}, #state{deliver_fun = DeliverFun}) -> redeliver({pubrel, PacketId}, #state{deliver_fun = DeliverFun}) ->