From bb2acae949cf8d04e69a9a96226dbf4ef9f513c0 Mon Sep 17 00:00:00 2001 From: Subsonic154 Date: Thu, 16 Apr 2026 10:58:43 -0400 Subject: [PATCH] Better detection of loopback and local addresses --- .../scala/net/psforever/actors/net/LoginActor.scala | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/scala/net/psforever/actors/net/LoginActor.scala b/src/main/scala/net/psforever/actors/net/LoginActor.scala index b11020c37..bc82119bc 100644 --- a/src/main/scala/net/psforever/actors/net/LoginActor.scala +++ b/src/main/scala/net/psforever/actors/net/LoginActor.scala @@ -91,10 +91,15 @@ object LoginActor { * @return the appropriate host address */ private def selectHostAddress(ipAddress: String): InetSocketAddress = { - ipAddress.substring(0, ipAddress.indexOf(".")) match { - case "127" => localHostAddress - case "10" | "169" | "172" | "192" => gameTestServerAddressLocal - case _ => gameTestServerAddressPublic + val address = InetAddress.getByName(ipAddress) + if (address.isLoopbackAddress()) { + localHostAddress + } + else if (address.isSiteLocalAddress()) { + gameTestServerAddressLocal + } + else { + gameTestServerAddressPublic } } }