summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2015-01-22 12:06:16 +0000
committerSimon MacMullen <simon@rabbitmq.com>2015-01-22 12:06:16 +0000
commitf37534814d8152ef9878ee2cdf65ce9a288a9116 (patch)
tree770c01950ec75b048284e6ddf16c0b99f01f096d
parentec2c1a8c9e6144e9a62aba113aff1070f67c2b8e (diff)
downloadrabbitmq-server-git-f37534814d8152ef9878ee2cdf65ce9a288a9116.tar.gz
Check that our generated distribution port is actually a valid port number! Also rename some exit codes for more generality and clarity.
-rw-r--r--src/rabbit_prelaunch.erl20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/rabbit_prelaunch.erl b/src/rabbit_prelaunch.erl
index 6a6a4ee680..a0766503b4 100644
--- a/src/rabbit_prelaunch.erl
+++ b/src/rabbit_prelaunch.erl
@@ -22,9 +22,9 @@
-include("rabbit.hrl").
--define(DIST_PORT_NOT_CONFIGURED, 0).
+-define(SET_DIST_PORT, 0).
-define(ERROR_CODE, 1).
--define(DIST_PORT_CONFIGURED, 2).
+-define(DO_NOT_SET_DIST_PORT, 2).
%%----------------------------------------------------------------------------
%% Specs
@@ -46,13 +46,14 @@ start() ->
{NodeName, NodeHost} = rabbit_nodes:parts(Node),
ok = duplicate_node_check(NodeName, NodeHost),
ok = dist_port_set_check(),
+ ok = dist_port_range_check(),
ok = dist_port_use_check(NodeHost);
[] ->
%% Ignore running node while installing windows service
ok = dist_port_set_check(),
ok
end,
- rabbit_misc:quit(?DIST_PORT_NOT_CONFIGURED),
+ rabbit_misc:quit(?SET_DIST_PORT),
ok.
stop() ->
@@ -88,7 +89,7 @@ dist_port_set_check() ->
case {pget(inet_dist_listen_min, Kernel, none),
pget(inet_dist_listen_max, Kernel, none)} of
{none, none} -> ok;
- _ -> rabbit_misc:quit(?DIST_PORT_CONFIGURED)
+ _ -> rabbit_misc:quit(?DO_NOT_SET_DIST_PORT)
end;
{ok, _} ->
ok;
@@ -97,6 +98,17 @@ dist_port_set_check() ->
end
end.
+dist_port_range_check() ->
+ case os:getenv("RABBITMQ_DIST_PORT") of
+ false -> ok;
+ PortStr -> case catch list_to_integer(PortStr) of
+ Port when is_integer(Port) andalso Port > 65535 ->
+ rabbit_misc:quit(?DO_NOT_SET_DIST_PORT);
+ _ ->
+ ok
+ end
+ end.
+
dist_port_use_check(NodeHost) ->
case os:getenv("RABBITMQ_DIST_PORT") of
false -> ok;