diff --git a/deps/rabbit/src/rabbit_peer_discovery.erl b/deps/rabbit/src/rabbit_peer_discovery.erl index b3f8123f40cd..a53ffe6083b3 100644 --- a/deps/rabbit/src/rabbit_peer_discovery.erl +++ b/deps/rabbit/src/rabbit_peer_discovery.erl @@ -388,18 +388,16 @@ query_node_props(Nodes) when Nodes =/= [] -> _ -> VMArgs1 end, - VMArgs3 = maybe_add_proto_dist_arguments(VMArgs2), - VMArgs4 = maybe_add_inetrc_arguments(VMArgs3), - VMArgs5 = maybe_add_tls_arguments(VMArgs4), + VMArgs3 = maybe_add_tls_arguments(VMArgs2), PeerStartArg = case Context of #{nodename_type := longnames} -> #{name => PeerName, host => Suffix, longnames => true, - args => VMArgs5}; + args => VMArgs3}; _ -> #{name => PeerName, - args => VMArgs5} + args => VMArgs3} end, ?LOG_DEBUG("Peer discovery: peer node arguments: ~tp", [PeerStartArg]), @@ -425,40 +423,27 @@ query_node_props(Nodes) when Nodes =/= [] -> query_node_props([]) -> []. -maybe_add_proto_dist_arguments(VMArgs) -> +maybe_add_tls_arguments(VMArgs0) -> case init:get_argument(proto_dist) of - {ok, [[Val]]} -> - %% See net_kernel.erl / protocol_childspecs/1 - Mod = list_to_existing_atom(Val ++ "_dist"), - ModDir = filename:dirname(code:which(Mod)), - ["-proto_dist", Val, "-pa", ModDir | VMArgs]; + {ok, [["inet_tls"]]} -> + add_tls_arguments(inet_tls, VMArgs0); + {ok, [["inet6_tls"]]} -> + add_tls_arguments(inet6_tls, VMArgs0); _ -> - VMArgs + VMArgs0 end. -maybe_add_inetrc_arguments(VMArgs) -> - %% If an inetrc file is configured, we need to use it for the temporary - %% hidden node too. - case application:get_env(kernel, inetrc) of - {ok, Val} when is_list(Val) -> - maybe_add_inetrc_arguments1(VMArgs, Val); - undefined -> - case os:getenv("ERL_INETRC") of - Val when is_list(Val) -> - maybe_add_inetrc_arguments1(VMArgs, Val); - false -> - VMArgs - end - end. - -maybe_add_inetrc_arguments1(VMArgs, Val) -> - %% The filename argument must be passed as a quoted string so that the - %% command line is correctly parsed as an Erlang string by the temporary - %% hidden node. - ValString = rabbit_misc:format("~0p", [Val]), - ["-kernel", "inetrc", ValString | VMArgs]. - -maybe_add_tls_arguments(VMArgs) -> +add_tls_arguments(InetDistModule, VMArgs0) -> + VMArgs1 = case InetDistModule of + inet_tls -> + ProtoDistArg = ["-proto_dist", "inet_tls" | VMArgs0], + ["-pa", filename:dirname(code:which(inet_tls_dist)) + | ProtoDistArg]; + inet6_tls -> + ProtoDistArg = ["-proto_dist", "inet6_tls" | VMArgs0], + ["-pa", filename:dirname(code:which(inet6_tls_dist)) + | ProtoDistArg] + end, %% In the next case, RabbitMQ has been configured with additional Erlang VM %% arguments such as this: %% @@ -509,14 +494,14 @@ maybe_add_tls_arguments(VMArgs) -> %% "/usr/local/lib/erlang/lib/ssl-11.0.3/ebin", %% "-proto_dist","inet_tls","-boot", %% "no_dot_erlang","-hidden"], - VMArgs1 = case init:get_argument(ssl_dist_opt) of + VMArgs2 = case init:get_argument(ssl_dist_opt) of {ok, SslDistOpts0} -> SslDistOpts1 = [["-ssl_dist_opt" | SslDistOpt] || SslDistOpt <- SslDistOpts0], SslDistOpts2 = lists:concat(SslDistOpts1), - SslDistOpts2 ++ VMArgs; + SslDistOpts2 ++ VMArgs1; _ -> - VMArgs + VMArgs1 end, %% In the next case, RabbitMQ has been configured with additional Erlang VM %% arguments such as this: @@ -526,13 +511,13 @@ maybe_add_tls_arguments(VMArgs) -> %% %% This code adds the `ssl_dist_optfile' argument to the peer node's %% argument list. - VMArgs2 = case init:get_argument(ssl_dist_optfile) of + VMArgs3 = case init:get_argument(ssl_dist_optfile) of {ok, [[SslDistOptfileArg]]} -> - ["-ssl_dist_optfile", SslDistOptfileArg | VMArgs1]; + ["-ssl_dist_optfile", SslDistOptfileArg | VMArgs2]; _ -> - VMArgs1 + VMArgs2 end, - VMArgs2. + VMArgs3. do_query_node_props(Nodes) when Nodes =/= [] -> %% Make sure all log messages are forwarded from this temporary hidden