File 0708-Respect-proto_dist-flag-when-specified-multiple-time.patch of Package erlang
From 4de3cc94406f546948ac53119c43c3146798623e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonatan=20K=C5=82osko?= <jonatanklosko@gmail.com>
Date: Mon, 15 Jul 2024 19:55:11 +0700
Subject: [PATCH] Respect -proto_dist flag when specified multiple times
---
lib/kernel/src/net_kernel.erl | 36 ++++++++++++++++++++++-------------
1 file changed, 23 insertions(+), 13 deletions(-)
diff --git a/lib/kernel/src/net_kernel.erl b/lib/kernel/src/net_kernel.erl
index f99e847c10..485a033dc9 100644
--- a/lib/kernel/src/net_kernel.erl
+++ b/lib/kernel/src/net_kernel.erl
@@ -180,6 +180,7 @@ in the Erlang Reference Manual.
-type connection_type() :: normal | hidden.
-include("net_address.hrl").
+-include_lib("kernel/include/logger.hrl").
%% Relaxed typing to allow ets:select without Dialyzer complains.
-record(connection, {
@@ -2399,12 +2400,8 @@ split_node(Name) ->
%%
%%
protocol_childspecs() ->
- case init:get_argument(proto_dist) of
- {ok, [Protos]} ->
- protocol_childspecs(Protos);
- _ ->
- protocol_childspecs(["inet_tcp"])
- end.
+ Protos = proto_dist_argument(),
+ protocol_childspecs(Protos).
protocol_childspecs([]) ->
[];
@@ -2456,17 +2453,31 @@ hidden_argument() ->
false
end.
+%%%
+%%% -proto_dist command line argument
+%%%
+
+proto_dist_argument() ->
+ case init:get_argument(proto_dist) of
+ {ok, [Protos | Rest]} ->
+ case Rest of
+ [] ->
+ ok;
+ _ ->
+ ?LOG_WARNING("Multiple -proto_dist given to erl, using the first, ~p", [Protos])
+ end,
+ Protos;
+ _ ->
+ ["inet_tcp"]
+ end.
+
%%
%% Start all protocols
%%
start_protos(Node, CleanHalt, Listen) ->
- case init:get_argument(proto_dist) of
- {ok, [Protos]} ->
- start_protos(Node, Protos, CleanHalt, Listen);
- _ ->
- start_protos(Node, ["inet_tcp"], CleanHalt, Listen)
- end.
+ Protos = proto_dist_argument(),
+ start_protos(Node, Protos, CleanHalt, Listen).
start_protos(Node, Ps, CleanHalt, Listen) ->
Listeners = case Listen of
@@ -3011,4 +3022,3 @@ opts_node(Op, Node, Opts, From, #state{req_map = ReqMap0} = S0) ->
_ ->
async_reply({reply, {error, noconnection}, S0}, From)
end.
-
--
2.43.0