fix(emqx_channel): fix some error when properties equal undefined

This commit is contained in:
zhanghongtong 2020-07-23 17:17:41 +08:00 committed by tigercl
parent 6ffbc0949d
commit 8bcf15f391
1 changed files with 10 additions and 2 deletions

View File

@ -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}