From 6a4d823b2435652bf18992f488bf8b67262475f0 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Fri, 25 Mar 2022 17:31:31 +0800 Subject: [PATCH 1/2] fix(sys): compatible with binary type protocol --- apps/emqx/src/emqx_sys.erl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/emqx/src/emqx_sys.erl b/apps/emqx/src/emqx_sys.erl index 9fa116313..d3bf72fc3 100644 --- a/apps/emqx/src/emqx_sys.erl +++ b/apps/emqx/src/emqx_sys.erl @@ -365,10 +365,13 @@ event_topic(Event, #{clientid := ClientId, protocol := GwName}) -> [ systop("gateway"), "/", - atom_to_binary(GwName), + bin(GwName), "/clients/", ClientId, "/", - atom_to_binary(Event) + bin(Event) ] ). + +bin(A) when is_atom(A) -> atom_to_binary(A); +bin(B) when is_binary(B) -> B. From 84313874085d125594158b4650025bfc5ea93954 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Fri, 25 Mar 2022 18:15:27 +0800 Subject: [PATCH 2/2] chore(exproto): set proto_name default to exproto --- .../emqx_gateway/src/exproto/emqx_exproto_channel.erl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/emqx_gateway/src/exproto/emqx_exproto_channel.erl b/apps/emqx_gateway/src/exproto/emqx_exproto_channel.erl index 137682ff8..a5c889516 100644 --- a/apps/emqx_gateway/src/exproto/emqx_exproto_channel.erl +++ b/apps/emqx_gateway/src/exproto/emqx_exproto_channel.erl @@ -610,7 +610,7 @@ enrich_conninfo(InClientInfo, ConnInfo) -> enrich_clientinfo(InClientInfo = #{proto_name := ProtoName}, ClientInfo) -> Ks = [clientid, username, mountpoint], NClientInfo = maps:merge(ClientInfo, maps:with(Ks, InClientInfo)), - NClientInfo#{protocol => ProtoName}. + NClientInfo#{protocol => proto_name_to_protocol(ProtoName)}. default_conninfo(ConnInfo) -> ConnInfo#{clean_start => true, @@ -619,6 +619,8 @@ default_conninfo(ConnInfo) -> conn_mod => undefined, conn_props => #{}, connected => true, + proto_name => <<"exproto">>, + proto_ver => <<"1.0">>, connected_at => erlang:system_time(millisecond), keepalive => 0, receive_maximum => 0, @@ -627,7 +629,7 @@ default_conninfo(ConnInfo) -> default_clientinfo(#{peername := {PeerHost, _}, sockname := {_, SockPort}}) -> #{zone => default, - protocol => undefined, + protocol => exproto, peerhost => PeerHost, sockport => SockPort, clientid => undefined, @@ -642,3 +644,8 @@ stringfy(Reason) -> fmt_from(undefined) -> <<>>; fmt_from(Bin) when is_binary(Bin) -> Bin; fmt_from(T) -> stringfy(T). + +proto_name_to_protocol(<<>>) -> + exproto; +proto_name_to_protocol(ProtoName) when is_binary(ProtoName) -> + binary_to_atom(ProtoName).