diff --git a/apps/emqx/src/emqx_channel.erl b/apps/emqx/src/emqx_channel.erl index 29152a447..f6f3b4c4f 100644 --- a/apps/emqx/src/emqx_channel.erl +++ b/apps/emqx/src/emqx_channel.erl @@ -527,9 +527,9 @@ handle_in( TupleTopicFilters2 = lists:foldl( fun - ({{Topic, Opts = #{delete := true}}, _QoS}, Acc) -> - Key = {Topic, maps:without([delete], Opts)}, - lists:keydelete(Key, 1, Acc); + ({{Topic, Opts = #{deny_subscription := true}}, _QoS}, Acc) -> + Key = {Topic, maps:without([deny_subscription], Opts)}, + lists:keyreplace(Key, 1, Acc, {Key, ?RC_UNSPECIFIED_ERROR}); (Tuple = {Key, _Value}, Acc) -> lists:keyreplace(Key, 1, Acc, Tuple) end, diff --git a/apps/emqx/test/emqx_broker_SUITE.erl b/apps/emqx/test/emqx_broker_SUITE.erl index fc9f8d192..a81d42960 100644 --- a/apps/emqx/test/emqx_broker_SUITE.erl +++ b/apps/emqx/test/emqx_broker_SUITE.erl @@ -727,7 +727,7 @@ t_handle_in_empty_client_subscribe_hook(Config) when is_list(Config) -> {ok, _} = emqtt:connect(C), try {ok, _, RCs} = emqtt:subscribe(C, <<"t">>), - ?assertEqual([], RCs), + ?assertEqual([?RC_UNSPECIFIED_ERROR], RCs), ok after emqtt:disconnect(C) @@ -791,5 +791,5 @@ recv_msgs(Count, Msgs) -> end. client_subscribe_delete_all_hook(_ClientInfo, _Username, TopicFilter) -> - EmptyFilters = [{T, Opts#{delete => true}} || {T, Opts} <- TopicFilter], + EmptyFilters = [{T, Opts#{deny_subscription => true}} || {T, Opts} <- TopicFilter], {stop, EmptyFilters}.