diff --git a/src/emqx_protocol.erl b/src/emqx_protocol.erl index 4602337eb..1dae228d7 100644 --- a/src/emqx_protocol.erl +++ b/src/emqx_protocol.erl @@ -650,9 +650,15 @@ check_publish(Packet, PState) -> check_pub_caps(#mqtt_packet{header = #mqtt_packet_header{qos = QoS, retain = Retain}, variable = #mqtt_packet_publish{ properties = Properties}}, #pstate{zone = Zone}) -> - #{'Topic-Alias' := TopicAlias} = Properties, + emqx_mqtt_caps:check_pub(Zone, #{qos => QoS, retain => Retain}); +check_pub_caps(#mqtt_packet{header = #mqtt_packet_header{qos = QoS, retain = Retain}, + variable = #mqtt_packet_publish{ + properties = #{'Topic-Alias' := TopicAlias} + }}, + #pstate{zone = Zone}) -> emqx_mqtt_caps:check_pub(Zone, #{qos => QoS, retain => Retain, topic_alias => TopicAlias}). + check_pub_acl(_Packet, #pstate{is_super = IsSuper, enable_acl = EnableAcl}) when IsSuper orelse (not EnableAcl) -> ok;