Fix issue #1319, reset DUP=0 when recv DUP=1 PUBLISH Message

This commit is contained in:
HeeeJianBo 2017-11-02 09:48:37 +08:00
parent 84d8eae37e
commit 279b96f146
1 changed files with 6 additions and 2 deletions

View File

@ -308,7 +308,9 @@ publish(Packet = ?PUBLISH_PACKET(?QOS_0, _PacketId),
username = Username,
mountpoint = MountPoint,
session = Session}) ->
Msg = emqttd_message:from_packet(Username, ClientId, Packet),
Msg0 = emqttd_message:from_packet(Username, ClientId, Packet),
% MQTT 3.3.1-3: Need reset DUP flag when recv publish message
Msg = emqttd_message:unset_flag(dup, Msg0),
emqttd_session:publish(Session, mount(MountPoint, Msg));
publish(Packet = ?PUBLISH_PACKET(?QOS_1, _PacketId), State) ->
@ -322,7 +324,9 @@ with_puback(Type, Packet = ?PUBLISH_PACKET(_Qos, PacketId),
username = Username,
mountpoint = MountPoint,
session = Session}) ->
Msg = emqttd_message:from_packet(Username, ClientId, Packet),
Msg0 = emqttd_message:from_packet(Username, ClientId, Packet),
% MQTT 3.3.1-3: Need reset DUP flag when recv publish message
Msg = emqttd_message:unset_flag(dup, Msg0),
case emqttd_session:publish(Session, mount(MountPoint, Msg)) of
ok ->
send(?PUBACK_PACKET(Type, PacketId), State);