From 1c945661411178b4e70edd5a2c04ee11a6cbc06e Mon Sep 17 00:00:00 2001 From: Gilbert Wong Date: Thu, 30 Aug 2018 23:49:08 +0800 Subject: [PATCH] add topic alias validate --- src/emqx_packet.erl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/emqx_packet.erl b/src/emqx_packet.erl index dfc8359d2..7e4f27821 100644 --- a/src/emqx_packet.erl +++ b/src/emqx_packet.erl @@ -55,10 +55,11 @@ validate(?UNSUBSCRIBE_PACKET(PacketId, TopicFilters)) -> validate_packet_id(PacketId) andalso ok == lists:foreach(fun emqx_topic:validate/1, TopicFilters); -validate(?PUBLISH_PACKET(_QoS, <<>>, _, _)) -> +validate(?PUBLISH_PACKET(_QoS, <<>>, _, _, _)) -> error(topic_name_invalid); -validate(?PUBLISH_PACKET(_QoS, Topic, _, _)) -> - (not emqx_topic:wildcard(Topic)) orelse error(topic_name_invalid); +validate(?PUBLISH_PACKET(_QoS, Topic, _, Properties, _)) -> + ((not emqx_topic:wildcard(Topic)) orelse error(topic_name_invalid)) + andalso validate_properties(?PUBLISH, Properties); validate(_Packet) -> true. @@ -71,9 +72,14 @@ validate_packet_id(_) -> validate_properties(?SUBSCRIBE, #{'Subscription-Identifier' := I}) when I =< 0; I >= 16#FFFFFFF -> error(subscription_identifier_invalid); +validate_properties(?PUBLISH, # {'Topic-Alias':= I}) + when I =:= 0 -> + error(topic_alias_invalid); validate_properties(_, _) -> true. + + validate_subscription({Topic, #{qos := QoS}}) -> emqx_topic:validate(filter, Topic) andalso validate_qos(QoS).