summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2015-10-27 05:31:03 +0900
committerMichael Klishin <mklishin@pivotal.io>2015-10-27 05:31:03 +0900
commit8366d05cc8638662a5bf74448e63f34f74220e10 (patch)
treee06518bbf48cdfbb13285f4fa6eaff35f055a74c /src
parent5f8bdce5bd4b7473dec5ac1e2c9245fd90d8bf27 (diff)
parent9c87242dda3a864661f8092b8c07fc6ea76aab11 (diff)
downloadrabbitmq-server-git-8366d05cc8638662a5bf74448e63f34f74220e10.tar.gz
Merge branch 'stable'
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_prelaunch.erl18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/rabbit_prelaunch.erl b/src/rabbit_prelaunch.erl
index 13455abb0a..c8200d472d 100644
--- a/src/rabbit_prelaunch.erl
+++ b/src/rabbit_prelaunch.erl
@@ -113,10 +113,20 @@ dist_port_use_check(NodeHost) ->
case os:getenv("RABBITMQ_DIST_PORT") of
false -> ok;
PortStr -> Port = list_to_integer(PortStr),
- case gen_tcp:listen(Port, [inet, {reuseaddr, true}]) of
- {ok, Sock} -> gen_tcp:close(Sock);
- {error, _} -> dist_port_use_check_fail(Port, NodeHost)
- end
+ disk_port_use_check_ipv4(NodeHost, Port)
+ end.
+
+disk_port_use_check_ipv4(NodeHost, Port) ->
+ case gen_tcp:listen(Port, [inet, {reuseaddr, true}]) of
+ {ok, Sock} -> gen_tcp:close(Sock);
+ {error, einval} -> disk_port_use_check_ipv6(NodeHost, Port);
+ {error, _} -> dist_port_use_check_fail(Port, NodeHost)
+ end.
+
+disk_port_use_check_ipv6(NodeHost, Port) ->
+ case gen_tcp:listen(Port, [inet6, {reuseaddr, true}]) of
+ {ok, Sock} -> gen_tcp:close(Sock);
+ {error, _} -> dist_port_use_check_fail(Port, NodeHost)
end.
-ifdef(use_specs).