Просмотр исходного кода

fix pattern match bu
Prior to this change, when packet have topic alias, the check_pub_caps
function could not be matched correctly

This change fix this bug.

Gilbert Wong 7 лет назад
Родитель
Сommit
78020de302
1 измененных файлов с 5 добавлено и 5 удалено
  1. 5 5
      src/emqx_protocol.erl

+ 5 - 5
src/emqx_protocol.erl

@@ -647,16 +647,16 @@ check_publish(Packet, PState) ->
     run_check_steps([fun check_pub_caps/2,
                      fun check_pub_acl/2], Packet, PState).
 
-check_pub_caps(#mqtt_packet{header = #mqtt_packet_header{qos = QoS, retain = Retain},
-                            variable = #mqtt_packet_publish{ properties = Properties}},
-               #pstate{zone = Zone}) ->
-    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}).
+    emqx_mqtt_caps:check_pub(Zone, #{qos => QoS, retain => Retain, topic_alias => TopicAlias});
+check_pub_caps(#mqtt_packet{header = #mqtt_packet_header{qos = QoS, retain = Retain},
+                            variable = #mqtt_packet_publish{ properties = Properties}},
+               #pstate{zone = Zone}) ->
+    emqx_mqtt_caps:check_pub(Zone, #{qos => QoS, retain => Retain}).
 
 
 check_pub_acl(_Packet, #pstate{is_super = IsSuper, enable_acl = EnableAcl})