From 2a20f110b9c9f128d1d2aef0f6e23c591ae0cb04 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Wed, 29 Dec 2021 19:04:49 +0800 Subject: [PATCH] fix(gw): use emqx_http_lib to parse uri --- apps/emqx_gateway/src/emqx_gateway_utils.erl | 14 -------------- .../src/exproto/emqx_exproto_impl.erl | 19 +++++++++++-------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/apps/emqx_gateway/src/emqx_gateway_utils.erl b/apps/emqx_gateway/src/emqx_gateway_utils.erl index 95720ff13..cc771ed95 100644 --- a/apps/emqx_gateway/src/emqx_gateway_utils.erl +++ b/apps/emqx_gateway/src/emqx_gateway_utils.erl @@ -46,7 +46,6 @@ ]). -export([ stringfy/1 - , parse_address/1 ]). -export([ normalize_config/1 @@ -332,19 +331,6 @@ stringfy(T) when is_list(T); is_binary(T) -> stringfy(T) -> iolist_to_binary(io_lib:format("~0p", [T])). --spec parse_address(binary() | list()) -> {list(), integer()}. -parse_address(S) when is_binary(S); is_list(S) -> - S1 = case is_binary(S) of - true -> lists:reverse(binary_to_list(S)); - _ -> lists:reverse(S) - end, - case re:split(S1, ":", [{parts, 2}, {return, list}]) of - [Port0, Host0] -> - {lists:reverse(Host0), list_to_integer(lists:reverse(Port0))}; - _ -> - error(badarg) - end. - -spec normalize_config(emqx_config:config()) -> list({ Type :: udp | tcp | ssl | dtls , Name :: atom() diff --git a/apps/emqx_gateway/src/exproto/emqx_exproto_impl.erl b/apps/emqx_gateway/src/exproto/emqx_exproto_impl.erl index 48dca4324..75057534f 100644 --- a/apps/emqx_gateway/src/exproto/emqx_exproto_impl.erl +++ b/apps/emqx_gateway/src/exproto/emqx_exproto_impl.erl @@ -148,13 +148,16 @@ stop_grpc_server(GwName) -> start_grpc_client_channel(_GwName, undefined) -> undefined; start_grpc_client_channel(GwName, Options = #{address := Address}) -> - {Host, Port} = try emqx_gateway_utils:parse_address(Address) - catch error : badarg -> - throw({badconf, #{key => address, - value => Address, - reason => illegal_grpc_address - }}) - end, + #{host := Host, port := Port} = + case emqx_http_lib:uri_parse(Address) of + {ok, URIMap0} -> URIMap0; + {error, _Reason} -> + throw({badconf, #{key => address, + value => Address, + reason => illegal_grpc_address + }}) + + end, case maps:to_list(maps:get(ssl, Options, #{})) of [] -> SvrAddr = compose_http_uri(http, Host, Port), @@ -170,7 +173,7 @@ start_grpc_client_channel(GwName, Options = #{address := Address}) -> compose_http_uri(Scheme, Host, Port) -> lists:flatten( io_lib:format( - "~s://~s:~w", [Scheme, Host, Port])). + "~s://~s:~w", [Scheme, inet:ntoa(Host), Port])). stop_grpc_client_channel(GwName) -> _ = grpc_client_sup:stop_channel_pool(GwName),