diff --git a/src/emqx_channel.erl b/src/emqx_channel.erl index 9c295a186..4f9f55d2f 100644 --- a/src/emqx_channel.erl +++ b/src/emqx_channel.erl @@ -1247,9 +1247,13 @@ packing_alias(Packet = #mqtt_packet{ Channel = ?IS_MQTT_V5 = #channel{topic_aliases = TopicAliases, alias_maximum = Limits}) -> case find_alias(outbound, Topic, TopicAliases) of {ok, AliasId} -> + NProp = case Prop of + undefined -> #{'Topic-Alias' => AliasId}; + _ -> maps:merge(Prop, #{'Topic-Alias' => AliasId}) + end, NPublish = Publish#mqtt_packet_publish{ topic_name = <<>>, - properties = maps:merge(Prop, #{'Topic-Alias' => AliasId}) + properties = NProp }, {Packet#mqtt_packet{variable = NPublish}, Channel}; error -> @@ -1260,9 +1264,13 @@ packing_alias(Packet = #mqtt_packet{ true -> NTopicAliases = save_alias(outbound, AliasId, Topic, TopicAliases), NChannel = Channel#channel{topic_aliases = NTopicAliases}, + NProp = case Prop of + undefined -> #{'Topic-Alias' => AliasId}; + _ -> maps:merge(Prop, #{'Topic-Alias' => AliasId}) + end, NPublish = Publish#mqtt_packet_publish{ topic_name = Topic, - properties = maps:merge(Prop, #{'Topic-Alias' => AliasId}) + properties = NProp }, {Packet#mqtt_packet{variable = NPublish}, NChannel}; false -> {Packet, Channel}