From 9aa178b51d074788f5079c0b0c0775caadf39396 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Tue, 11 Jan 2022 14:46:20 +0800 Subject: [PATCH 1/5] fix(stomp): fix parsing rear frame split byte crash fix: https://github.com/emqx/emqx/issues/6693 --- apps/emqx_stomp/src/emqx_stomp_frame.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx_stomp/src/emqx_stomp_frame.erl b/apps/emqx_stomp/src/emqx_stomp_frame.erl index c4d19ae3a..212242969 100644 --- a/apps/emqx_stomp/src/emqx_stomp_frame.erl +++ b/apps/emqx_stomp/src/emqx_stomp_frame.erl @@ -121,7 +121,7 @@ g(Key, Opts, Val) -> parse(<<>>, Parser) -> {more, Parser}; -parse(Bytes, #{phase := body, len := Len, state := State}) -> +parse(Bytes, #{phase := body, length := Len, state := State}) -> parse(body, Bytes, State, Len); parse(Bytes, Parser = #{pre := Pre}) -> From 9efab7d5df0e620cf57cb91be45898c9cc5718ab Mon Sep 17 00:00:00 2001 From: JianBo He Date: Tue, 11 Jan 2022 14:48:07 +0800 Subject: [PATCH 2/5] chore(stomp): update appup & app.src --- apps/emqx_stomp/src/emqx_stomp.app.src | 2 +- apps/emqx_stomp/src/emqx_stomp.appup.src | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/emqx_stomp/src/emqx_stomp.app.src b/apps/emqx_stomp/src/emqx_stomp.app.src index c2f4b57d3..a70826e34 100644 --- a/apps/emqx_stomp/src/emqx_stomp.app.src +++ b/apps/emqx_stomp/src/emqx_stomp.app.src @@ -1,6 +1,6 @@ {application, emqx_stomp, [{description, "EMQ X Stomp Protocol Plugin"}, - {vsn, "4.3.3"}, % strict semver, bump manually! + {vsn, "4.3.4"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_stomp_sup]}, {applications, [kernel,stdlib]}, diff --git a/apps/emqx_stomp/src/emqx_stomp.appup.src b/apps/emqx_stomp/src/emqx_stomp.appup.src index 0b5372dc9..8d61073d0 100644 --- a/apps/emqx_stomp/src/emqx_stomp.appup.src +++ b/apps/emqx_stomp/src/emqx_stomp.appup.src @@ -1,16 +1,24 @@ %% -*- mode: erlang -*- {VSN, - [{"4.3.2",[{load_module,emqx_stomp_protocol,brutal_purge,soft_purge,[]}]}, + [{"4.3.3",[{load_module,emqx_stomp_frame,brutal_purge,soft_purge,[]}]}, + {"4.3.2", + [{load_module,emqx_stomp_protocol,brutal_purge,soft_purge,[]}, + {load_module,emqx_stomp_frame,brutal_purge,soft_purge,[]}]}, {"4.3.1", [{load_module,emqx_stomp_protocol,brutal_purge,soft_purge,[]}, + {load_module,emqx_stomp_frame,brutal_purge,soft_purge,[]}, {load_module,emqx_stomp_connection,brutal_purge,soft_purge,[]}]}, {"4.3.0", [{restart_application,emqx_stomp}, {apply,{emqx_stomp,force_clear_after_app_stoped,[]}}]}, {<<".*">>,[]}], - [{"4.3.2",[{load_module,emqx_stomp_protocol,brutal_purge,soft_purge,[]}]}, + [{"4.3.3",[{load_module,emqx_stomp_frame,brutal_purge,soft_purge,[]}]}, + {"4.3.2", + [{load_module,emqx_stomp_protocol,brutal_purge,soft_purge,[]}, + {load_module,emqx_stomp_frame,brutal_purge,soft_purge,[]}]}, {"4.3.1", [{load_module,emqx_stomp_protocol,brutal_purge,soft_purge,[]}, + {load_module,emqx_stomp_frame,brutal_purge,soft_purge,[]}, {load_module,emqx_stomp_connection,brutal_purge,soft_purge,[]}]}, {"4.3.0", [{restart_application,emqx_stomp}]}, From f2cfde7421a37e54295f44ced554ea03fc8f8164 Mon Sep 17 00:00:00 2001 From: JimMoen Date: Tue, 11 Jan 2022 15:54:37 +0800 Subject: [PATCH 3/5] fix(mgmt): fix subscription info format --- .gitignore | 1 + apps/emqx_management/src/emqx_mgmt.erl | 24 ++++++++++--------- .../src/emqx_mgmt_api_subscriptions.erl | 4 ++-- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index bbb4edebb..13217dc00 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ erlang_ls.config *# # For direnv .envrc +mix.lock diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 39595b104..e68a6163f 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -58,8 +58,8 @@ -export([ list_subscriptions/1 , list_subscriptions_via_topic/2 , list_subscriptions_via_topic/3 - , lookup_subscriptions/1 , lookup_subscriptions/2 + , lookup_subscriptions/3 ]). %% Routes @@ -322,18 +322,20 @@ list_subscriptions_via_topic(Node, Topic, {M,F}) when Node =:= node() -> list_subscriptions_via_topic(Node, Topic, FormatFun) -> rpc_call(Node, list_subscriptions_via_topic, [Node, Topic, FormatFun]). -lookup_subscriptions(ClientId) -> - lists:append([lookup_subscriptions(Node, ClientId) || Node <- ekka_mnesia:running_nodes()]). +lookup_subscriptions(ClientId, FormatFun) -> + lists:append([lookup_subscriptions(Node, ClientId, FormatFun) || Node <- ekka_mnesia:running_nodes()]). -lookup_subscriptions(Node, ClientId) when Node =:= node() -> - case ets:lookup(emqx_subid, ClientId) of - [] -> []; - [{_, Pid}] -> - ets:match_object(emqx_suboption, {{Pid, '_'}, '_'}) - end; +lookup_subscriptions(Node, ClientId, {M, F}) when Node =:= node() -> + Result = case ets:lookup(emqx_subid, ClientId) of + [] -> []; + [{_, Pid}] -> + ets:match_object(emqx_suboption, {{Pid, '_'}, '_'}) + end, + %% format at the called node + erlang:apply(M, F, [Result]); -lookup_subscriptions(Node, ClientId) -> - rpc_call(Node, lookup_subscriptions, [Node, ClientId]). +lookup_subscriptions(Node, ClientId, FormatFun) -> + rpc_call(Node, lookup_subscriptions, [Node, ClientId, FormatFun]). %%-------------------------------------------------------------------- %% Routes diff --git a/apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl b/apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl index 4165ca51a..464df33c9 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl @@ -85,10 +85,10 @@ list(#{node := Node} = Bindings, Params) -> end. lookup(#{node := Node, clientid := ClientId}, _Params) -> - minirest:return({ok, format(emqx_mgmt:lookup_subscriptions(Node, emqx_mgmt_util:urldecode(ClientId)))}); + minirest:return({ok, emqx_mgmt:lookup_subscriptions(Node, emqx_mgmt_util:urldecode(ClientId), ?format_fun)}); lookup(#{clientid := ClientId}, _Params) -> - minirest:return({ok, format(emqx_mgmt:lookup_subscriptions(emqx_mgmt_util:urldecode(ClientId)))}). + minirest:return({ok, emqx_mgmt:lookup_subscriptions(emqx_mgmt_util:urldecode(ClientId), ?format_fun)}). format(Items) when is_list(Items) -> [format(Item) || Item <- Items]; From 47ba72729fc6400fc0dc2c4697f14c3a90c4540e Mon Sep 17 00:00:00 2001 From: JimMoen Date: Tue, 11 Jan 2022 16:23:25 +0800 Subject: [PATCH 4/5] chore(appup): update appup.src --- apps/emqx_management/src/emqx_management.app.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx_management/src/emqx_management.app.src b/apps/emqx_management/src/emqx_management.app.src index e8b235be7..bee65781a 100644 --- a/apps/emqx_management/src/emqx_management.app.src +++ b/apps/emqx_management/src/emqx_management.app.src @@ -1,6 +1,6 @@ {application, emqx_management, [{description, "EMQ X Management API and CLI"}, - {vsn, "4.3.10"}, % strict semver, bump manually! + {vsn, "4.3.11"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_management_sup]}, {applications, [kernel,stdlib,minirest]}, From 556a81a80e180fbfb5be5bfa926c0f30d8fa44b1 Mon Sep 17 00:00:00 2001 From: JimMoen Date: Wed, 12 Jan 2022 10:09:51 +0800 Subject: [PATCH 5/5] chore(appup): app version updated after last tag --- apps/emqx_management/src/emqx_management.app.src | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/emqx_management/src/emqx_management.app.src b/apps/emqx_management/src/emqx_management.app.src index bee65781a..e8b235be7 100644 --- a/apps/emqx_management/src/emqx_management.app.src +++ b/apps/emqx_management/src/emqx_management.app.src @@ -1,6 +1,6 @@ {application, emqx_management, [{description, "EMQ X Management API and CLI"}, - {vsn, "4.3.11"}, % strict semver, bump manually! + {vsn, "4.3.10"}, % strict semver, bump manually! {modules, []}, {registered, [emqx_management_sup]}, {applications, [kernel,stdlib,minirest]},