fix(gw): use emqx_http_lib to parse uri
This commit is contained in:
parent
388fdc6057
commit
2a20f110b9
|
@ -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()
|
||||
|
|
|
@ -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),
|
||||
|
|
Loading…
Reference in New Issue