diff options
| author | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2016-08-10 12:57:15 +0200 |
|---|---|---|
| committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2016-08-10 12:57:15 +0200 |
| commit | efafdd01cf4832cada5dfe81f6ec6cdd7a5d28c5 (patch) | |
| tree | b3d0b8912d2afeab46ad86a4532140b4c7d32334 /src | |
| parent | 84f40296d6533c344d457bdd7192cdb897e45dbf (diff) | |
| parent | ccffb401112b54568dcf4884d9be666657e3cc29 (diff) | |
| download | rabbitmq-server-git-efafdd01cf4832cada5dfe81f6ec6cdd7a5d28c5.tar.gz | |
Merge branch 'stable'
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_cli.erl | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/rabbit_cli.erl b/src/rabbit_cli.erl index d324625d1b..862725f550 100644 --- a/src/rabbit_cli.erl +++ b/src/rabbit_cli.erl @@ -147,7 +147,7 @@ main(ParseFun, DoFun, UsageMod) -> start_distribution_anon(0, LastError) -> {error, LastError}; start_distribution_anon(TriesLeft, _) -> - NameCandidate = list_to_atom(rabbit_misc:format("rabbitmq-cli-~2..0b", [rand:uniform(100)])), + NameCandidate = generate_cli_node_name(), case net_kernel:start([NameCandidate, name_type()]) of {ok, _} = Result -> Result; @@ -155,7 +155,7 @@ start_distribution_anon(TriesLeft, _) -> start_distribution_anon(TriesLeft - 1, Reason) end. -%% Tries to start distribution with randonm name choosen from limited list of candidates - to +%% Tries to start distribution with random name choosen from limited list of candidates - to %% prevent atom table pollution on target nodes. start_distribution() -> rabbit_nodes:ensure_epmd(), @@ -171,6 +171,22 @@ name_type() -> _ -> shortnames end. +generate_cli_node_name() -> + Base = rabbit_misc:format("rabbitmq-cli-~2..0b", [rand:uniform(100)]), + NameAsList = + case {name_type(), inet_db:res_option(domain)} of + {longnames, []} -> + %% Distribution will fail to start if it's unable to + %% determine FQDN of a node (with at least one dot in + %% a name). + %% CLI is always an initiator of connection, so it + %% doesn't matter if the name will not resolve. + Base ++ "@" ++ inet_db:gethostname() ++ ".no-domain"; + _ -> + Base + end, + list_to_atom(NameAsList). + usage(Mod) -> usage(Mod, ?EX_USAGE). |
