From a9597bbf17421bb986e9588070175815bebcf64c Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 29 Aug 2022 09:51:45 +0200 Subject: [PATCH] cleanup DNSUtil --- .../java/de/bixilon/minosoft/util/DNSUtil.kt | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/util/DNSUtil.kt b/src/main/java/de/bixilon/minosoft/util/DNSUtil.kt index 0f6a4f5d6..e20214477 100644 --- a/src/main/java/de/bixilon/minosoft/util/DNSUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/DNSUtil.kt @@ -20,29 +20,27 @@ import org.xbill.DNS.Type object DNSUtil { fun resolveServerAddress(hostname: String): List { - val fallbackAddress = getServerAddress(hostname) - val addresses: MutableList = mutableListOf() - if (hostname.contains(":")) { + val originalAddress = getServerAddress(hostname) + if (":" in hostname) { // port provided, skip srv check - addresses.add(fallbackAddress) - return addresses + return listOf(originalAddress) } + val query = "_minecraft._tcp.$hostname" - val records = Lookup(query, Type.SRV).run() - if (records == null) { - addresses.add(fallbackAddress) - return addresses - } + val records = Lookup(query, Type.SRV).run() ?: return listOf(originalAddress) + + val addresses: MutableList = mutableListOf() for (record in records) { - check(record is SRVRecord) - addresses.add(ServerAddress(record.target.toString(true), record.port)) + if (record !is SRVRecord) continue + addresses += ServerAddress(record.target.toString(true), record.port) } - addresses.add(fallbackAddress) + addresses += originalAddress return addresses } fun getServerAddress(hostname: String): ServerAddress { - val splitHostname = fixAddress(hostname).split(":", limit = 2).toTypedArray() + val splitHostname = fixAddress(hostname).split(":", limit = 2) + return if (splitHostname.size == 1) { ServerAddress(splitHostname[0], ProtocolDefinition.DEFAULT_PORT) } else {