fix: including subscription id keeps correct return code for qos > 0
When subscription id is set, the return code was set to 0 rather than the provided qos number due to earlier fix of acl check order.
This commit is contained in:
parent
18484577b1
commit
90529e18c6
|
@ -407,7 +407,8 @@ handle_in(Packet = ?SUBSCRIBE_PACKET(PacketId, Properties, TopicFilters),
|
||||||
case emqx_packet:check(Packet) of
|
case emqx_packet:check(Packet) of
|
||||||
ok ->
|
ok ->
|
||||||
TopicFilters0 = parse_topic_filters(TopicFilters),
|
TopicFilters0 = parse_topic_filters(TopicFilters),
|
||||||
TupleTopicFilters0 = check_sub_acls(TopicFilters0, Channel),
|
TopicFilters1 = put_subid_in_subopts(Properties, TopicFilters0),
|
||||||
|
TupleTopicFilters0 = check_sub_acls(TopicFilters1, Channel),
|
||||||
case emqx_zone:get_env(Zone, acl_deny_action, ignore) =:= disconnect andalso
|
case emqx_zone:get_env(Zone, acl_deny_action, ignore) =:= disconnect andalso
|
||||||
lists:any(fun({_TopicFilter, ReasonCode}) ->
|
lists:any(fun({_TopicFilter, ReasonCode}) ->
|
||||||
ReasonCode =:= ?RC_NOT_AUTHORIZED
|
ReasonCode =:= ?RC_NOT_AUTHORIZED
|
||||||
|
@ -419,8 +420,7 @@ handle_in(Packet = ?SUBSCRIBE_PACKET(PacketId, Properties, TopicFilters),
|
||||||
_Fun(lists:keyreplace(Key, 1, TupleList, Tuple), More);
|
_Fun(lists:keyreplace(Key, 1, TupleList, Tuple), More);
|
||||||
_Fun(TupleList, []) -> TupleList
|
_Fun(TupleList, []) -> TupleList
|
||||||
end,
|
end,
|
||||||
TopicFilters1 = [ TopicFilter || {TopicFilter, 0} <- TupleTopicFilters0],
|
TopicFilters2 = [ TopicFilter || {TopicFilter, 0} <- TupleTopicFilters0],
|
||||||
TopicFilters2 = put_subid_in_subopts(Properties, TopicFilters1),
|
|
||||||
TopicFilters3 = run_hooks('client.subscribe',
|
TopicFilters3 = run_hooks('client.subscribe',
|
||||||
[ClientInfo, Properties],
|
[ClientInfo, Properties],
|
||||||
TopicFilters2),
|
TopicFilters2),
|
||||||
|
|
Loading…
Reference in New Issue