diff --git a/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala b/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala index ad4fd2625e..94f5c87e93 100644 --- a/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala +++ b/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala @@ -66,7 +66,13 @@ class RemoteSettings(val config: Config, val systemName: String) { case "" ⇒ InetAddress.getLocalHost.getHostAddress case value ⇒ value } - val Port = getInt("akka.remote.server.port") + val Port = getInt("akka.remote.server.port") match { + case 0 => try { + val s = new java.net.ServerSocket(0) + try s.getLocalPort finally s.close() + } catch { case e => throw new ConfigurationException("Unable to obtain random port", e) } + case other => other + } val ConnectionTimeout = Duration(getMilliseconds("akka.remote.server.connection-timeout"), MILLISECONDS) val Backlog = getInt("akka.remote.server.backlog")