diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2015-01-22 12:06:16 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2015-01-22 12:06:16 +0000 |
| commit | f37534814d8152ef9878ee2cdf65ce9a288a9116 (patch) | |
| tree | 770c01950ec75b048284e6ddf16c0b99f01f096d | |
| parent | ec2c1a8c9e6144e9a62aba113aff1070f67c2b8e (diff) | |
| download | rabbitmq-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.erl | 20 |
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; |
