diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 5909c9dc2..20701b937 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -276,8 +276,7 @@ list_client_subscriptions(ClientId) -> ({_Node, List}) -> erlang:is_list(List) andalso 0 < erlang:length(List) end, - Expected = lists:filter(Filter, Results), - case Expected of + case lists:filter(Filter, Results) of [] -> []; [Result | _] -> Result end. diff --git a/apps/emqx_management/src/emqx_mgmt_api_clients.erl b/apps/emqx_management/src/emqx_mgmt_api_clients.erl index 9cc5d3016..5cb40d519 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_clients.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_clients.erl @@ -513,11 +513,21 @@ subscribe_batch(post, #{bindings := #{clientid := ClientID}, body := TopicInfos} subscribe_batch(#{clientid => ClientID, topics => Topics}). subscriptions(get, #{bindings := #{clientid := ClientID}}) -> - {Node, Subs0} = emqx_mgmt:list_client_subscriptions(ClientID), - Subs = lists:map(fun({Topic, SubOpts}) -> - #{node => Node, clientid => ClientID, topic => Topic, qos => maps:get(qos, SubOpts)} - end, Subs0), - {200, Subs}. + case emqx_mgmt:list_client_subscriptions(ClientID) of + [] -> + {200, []}; + {Node, Subs} -> + Formatter = + fun({Topic, SubOpts}) -> + #{ + node => Node, + clientid => ClientID, + topic => Topic, + qos => maps:get(qos, SubOpts) + } + end, + {200, lists:map(Formatter, Subs)} + end. set_keepalive(put, #{bindings := #{clientid := ClientID}, query_string := Query}) -> case maps:find(<<"interval">>, Query) of