diff --git a/apps/emqx/src/emqx_schema.erl b/apps/emqx/src/emqx_schema.erl index 67834839d..17d723a77 100644 --- a/apps/emqx/src/emqx_schema.erl +++ b/apps/emqx/src/emqx_schema.erl @@ -1758,7 +1758,7 @@ base_listener(Bind) -> )}, {"bind", sc( - hoconsc:union([ip_port(), integer()]), + ip_port(), #{ default => Bind, required => true, @@ -2525,9 +2525,9 @@ to_ip_port(Str) -> case split_ip_port(Str) of {"", Port} -> %% this is a local address - {ok, list_to_integer(Port)}; + {ok, parse_port(Port)}; {MaybeIp, Port} -> - PortVal = list_to_integer(Port), + PortVal = parse_port(Port), case inet:parse_address(MaybeIp) of {ok, IpTuple} -> {ok, {IpTuple, PortVal}}; @@ -2543,18 +2543,11 @@ split_ip_port(Str0) -> case lists:split(string:rchr(Str, $:), Str) of %% no colon {[], Str} -> - try - %% if it's just a port number, then return as-is - _ = list_to_integer(Str), - {"", Str} - catch - _:_ -> - error - end; + {"", Str}; {IpPlusColon, PortString} -> IpStr0 = lists:droplast(IpPlusColon), case IpStr0 of - %% dropp head/tail brackets + %% drop head/tail brackets [$[ | S] -> case lists:last(S) of $] -> {lists:droplast(S), PortString}; diff --git a/apps/emqx_dashboard/src/emqx_dashboard_schema.erl b/apps/emqx_dashboard/src/emqx_dashboard_schema.erl index 957cc6120..31ad4f831 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_schema.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_schema.erl @@ -195,7 +195,7 @@ enable(Bool) -> bind(Port) -> {"bind", ?HOCON( - ?UNION([non_neg_integer(), emqx_schema:ip_port()]), + emqx_schema:ip_port(), #{ default => 0, required => false, diff --git a/apps/emqx_gateway/src/emqx_gateway_schema.erl b/apps/emqx_gateway/src/emqx_gateway_schema.erl index d527e1e06..b43f4ba98 100644 --- a/apps/emqx_gateway/src/emqx_gateway_schema.erl +++ b/apps/emqx_gateway/src/emqx_gateway_schema.erl @@ -261,7 +261,7 @@ common_listener_opts() -> )}, {bind, sc( - hoconsc:union([ip_port(), integer()]), + ip_port(), #{desc => ?DESC(gateway_common_listener_bind)} )}, {max_connections, diff --git a/apps/emqx_gateway_exproto/src/emqx_exproto_schema.erl b/apps/emqx_gateway_exproto/src/emqx_exproto_schema.erl index 7e1f6f49c..10583e41a 100644 --- a/apps/emqx_gateway_exproto/src/emqx_exproto_schema.erl +++ b/apps/emqx_gateway_exproto/src/emqx_exproto_schema.erl @@ -56,7 +56,7 @@ fields(exproto_grpc_server) -> [ {bind, sc( - hoconsc:union([ip_port(), integer()]), + ip_port(), #{ required => true, desc => ?DESC(exproto_grpc_server_bind)