Skip to content

Commit f89009e

Browse files
Merge pull request rabbitmq#10159 from rabbitmq/rabbitmq-server-10153
Take disterl TLS arguments into account for `peer:start`
2 parents abcbe5e + 1cd9f4d commit f89009e

File tree

1 file changed

+42
-4
lines changed

1 file changed

+42
-4
lines changed

deps/rabbit/src/rabbit_peer_discovery.erl

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -372,28 +372,31 @@ query_node_props(Nodes) when Nodes =/= [] ->
372372
%% By using a temporary intermediate hidden node, we ask Erlang not to
373373
%% connect everyone automatically.
374374
Context = rabbit_prelaunch:get_context(),
375-
VMArgs0 = ["-hidden"],
375+
VMArgs0 = ["-boot", "no_dot_erlang", "-hidden"],
376376
VMArgs1 = case Context of
377377
#{erlang_cookie := ErlangCookie,
378378
var_origins := #{erlang_cookie := environment}} ->
379379
["-setcookie", atom_to_list(ErlangCookie) | VMArgs0];
380380
_ ->
381381
VMArgs0
382382
end,
383+
VMArgs2 = maybe_add_tls_arguments(VMArgs1),
383384
PeerStartArg = case Context of
384385
#{nodename_type := longnames} ->
385386
#{name => PeerName,
386387
host => Suffix,
387388
longnames => true,
388-
args => VMArgs1};
389+
args => VMArgs2};
389390
_ ->
390391
#{name => PeerName,
391-
args => VMArgs1}
392+
args => VMArgs2}
392393
end,
394+
?LOG_DEBUG("Peer discovery: peer node arguments: ~tp",
395+
[PeerStartArg]),
393396
case peer:start(PeerStartArg) of
394397
{ok, Pid, Peer} ->
395398
?LOG_DEBUG(
396-
"Peer discovery: use temporary hidden node '~ts' to query "
399+
"Peer discovery: using temporary hidden node '~ts' to query "
397400
"discovered peers properties",
398401
[Peer],
399402
#{domain => ?RMQLOG_DOMAIN_PEER_DISC}),
@@ -412,6 +415,41 @@ query_node_props(Nodes) when Nodes =/= [] ->
412415
query_node_props([]) ->
413416
[].
414417

418+
maybe_add_tls_arguments(VMArgs0) ->
419+
case init:get_argument(proto_dist) of
420+
{ok, [["inet_tls"]]} ->
421+
add_tls_arguments(inet_tls, VMArgs0);
422+
{ok, [["inet6_tls"]]} ->
423+
add_tls_arguments(inet6_tls, VMArgs0);
424+
error ->
425+
VMArgs0
426+
end.
427+
428+
add_tls_arguments(InetDistModule, VMArgs0) ->
429+
VMArgs1 = case InetDistModule of
430+
inet_tls ->
431+
ProtoDistArg = ["-proto_dist", "inet_tls" | VMArgs0],
432+
["-pa", filename:dirname(code:which(inet_tls_dist)) | ProtoDistArg];
433+
inet6_tls ->
434+
ProtoDistArg = ["-proto_dist", "inet6_tls" | VMArgs0],
435+
["-pa", filename:dirname(code:which(inet6_tls_dist)) | ProtoDistArg]
436+
end,
437+
VMArgs2 = case init:get_argument(ssl_dist_opt) of
438+
{ok, SslDistOpts0} ->
439+
SslDistOpts1 = [["-ssl_dist_opt" | SslDistOpt] || SslDistOpt <- SslDistOpts0],
440+
SslDistOpts2 = lists:concat(SslDistOpts1),
441+
SslDistOpts2 ++ VMArgs1;
442+
error ->
443+
VMArgs1
444+
end,
445+
VMArgs3 = case init:get_argument(ssl_dist_optfile) of
446+
{ok, [[SslDistOptfileArg]]} ->
447+
["-ssl_dist_optfile", SslDistOptfileArg | VMArgs2];
448+
error ->
449+
VMArgs2
450+
end,
451+
VMArgs3.
452+
415453
do_query_node_props(Nodes) when Nodes =/= [] ->
416454
%% Make sure all log messages are forwarded from this temporary hidden
417455
%% node to the upstream node, regardless of their level.

0 commit comments

Comments
 (0)