Add condition to handle when mqx_topic_alias do not exist
This commit is contained in:
parent
c145cb89f4
commit
765ab5ad7b
|
@ -69,6 +69,8 @@ do_check_pub(Props = #{ topic_alias := TopicAlias}, [{max_topic_alias, MaxTopicA
|
||||||
end;
|
end;
|
||||||
do_check_pub(#{retain := true}, [{mqtt_retain_available, false}|_Caps]) ->
|
do_check_pub(#{retain := true}, [{mqtt_retain_available, false}|_Caps]) ->
|
||||||
{error, ?RC_RETAIN_NOT_SUPPORTED};
|
{error, ?RC_RETAIN_NOT_SUPPORTED};
|
||||||
|
do_check_pub(Props, [{max_topic_alias, _} | Caps]) ->
|
||||||
|
do_check_pub(Props, Caps);
|
||||||
do_check_pub(Props, [{mqtt_retain_available, _}|Caps]) ->
|
do_check_pub(Props, [{mqtt_retain_available, _}|Caps]) ->
|
||||||
do_check_pub(Props, Caps).
|
do_check_pub(Props, Caps).
|
||||||
|
|
||||||
|
|
|
@ -33,36 +33,36 @@
|
||||||
-export([shutdown/2]).
|
-export([shutdown/2]).
|
||||||
|
|
||||||
-record(pstate, {
|
-record(pstate, {
|
||||||
zone,
|
zone,
|
||||||
sendfun,
|
sendfun,
|
||||||
peername,
|
peername,
|
||||||
peercert,
|
peercert,
|
||||||
proto_ver,
|
proto_ver,
|
||||||
proto_name,
|
proto_name,
|
||||||
ackprops,
|
ackprops,
|
||||||
client_id,
|
client_id,
|
||||||
is_assigned,
|
is_assigned,
|
||||||
conn_pid,
|
conn_pid,
|
||||||
conn_props,
|
conn_props,
|
||||||
ack_props,
|
ack_props,
|
||||||
username,
|
username,
|
||||||
session,
|
session,
|
||||||
clean_start,
|
clean_start,
|
||||||
topic_aliases,
|
topic_aliases,
|
||||||
packet_size,
|
packet_size,
|
||||||
will_topic,
|
will_topic,
|
||||||
will_msg,
|
will_msg,
|
||||||
keepalive,
|
keepalive,
|
||||||
mountpoint,
|
mountpoint,
|
||||||
is_super,
|
is_super,
|
||||||
is_bridge,
|
is_bridge,
|
||||||
enable_ban,
|
enable_ban,
|
||||||
enable_acl,
|
enable_acl,
|
||||||
recv_stats,
|
recv_stats,
|
||||||
send_stats,
|
send_stats,
|
||||||
connected,
|
connected,
|
||||||
connected_at
|
connected_at
|
||||||
}).
|
}).
|
||||||
|
|
||||||
-type(state() :: #pstate{}).
|
-type(state() :: #pstate{}).
|
||||||
-export_type([state/0]).
|
-export_type([state/0]).
|
||||||
|
|
|
@ -63,10 +63,12 @@ t_check_pub(_) ->
|
||||||
{ok, _} = emqx_zone:start_link(),
|
{ok, _} = emqx_zone:start_link(),
|
||||||
PubCaps = #{
|
PubCaps = #{
|
||||||
max_qos_allowed => ?QOS_1,
|
max_qos_allowed => ?QOS_1,
|
||||||
mqtt_retain_available => false
|
mqtt_retain_available => false,
|
||||||
|
max_topic_alias => 4
|
||||||
},
|
},
|
||||||
emqx_zone:set_env(zone, '$mqtt_pub_caps', PubCaps),
|
emqx_zone:set_env(zone, '$mqtt_pub_caps', PubCaps),
|
||||||
timer:sleep(100),
|
timer:sleep(100),
|
||||||
|
ct:log("~p", [emqx_mqtt_caps:get_caps(zone, publish)]),
|
||||||
BadPubProps1 = #{
|
BadPubProps1 = #{
|
||||||
qos => ?QOS_2,
|
qos => ?QOS_2,
|
||||||
retain => false
|
retain => false
|
||||||
|
@ -77,6 +79,12 @@ t_check_pub(_) ->
|
||||||
retain => true
|
retain => true
|
||||||
},
|
},
|
||||||
{error, ?RC_RETAIN_NOT_SUPPORTED} = emqx_mqtt_caps:check_pub(zone, BadPubProps2),
|
{error, ?RC_RETAIN_NOT_SUPPORTED} = emqx_mqtt_caps:check_pub(zone, BadPubProps2),
|
||||||
|
BadPubProps3 = #{
|
||||||
|
qos => ?QOS_1,
|
||||||
|
retain => false,
|
||||||
|
topic_alias => 5
|
||||||
|
},
|
||||||
|
{error, ?RC_TOPIC_ALIAS_INVALID} = emqx_mqtt_caps:check_pub(zone, BadPubProps3),
|
||||||
PubProps = #{
|
PubProps = #{
|
||||||
qos => ?QOS_1,
|
qos => ?QOS_1,
|
||||||
retain => false
|
retain => false
|
||||||
|
|
Loading…
Reference in New Issue