From 3ae8db972e13745934134d71fa1557b4cc3acd34 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:53:57 +0800 Subject: [PATCH] Fix ipv6 hosts https://github.com/2dust/v2rayNG/issues/5965 --- .../main/java/com/v2ray/ang/core/CoreConfigManager.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt index 7e08f7be..4cc21c6b 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt @@ -915,9 +915,14 @@ object CoreConfigManager { val userHosts = MmkvManager.decodeSettingsString(AppConfig.PREF_DNS_HOSTS) if (userHosts.isNotNullEmpty()) { val userHostsMap = userHosts?.split(",").orEmpty() - .filter { it.isNotEmpty() } - .filter { it.contains(":") } - .associate { it.split(":").let { (k, v) -> k to v } } + .filter { it.isNotBlank() && it.contains(":") } + .associate { + // Use limit = 2 to split only at the first colon. + // This ensures that IPv6 addresses (which contain multiple colons) + // are preserved entirely in the second part. + val parts = it.split(":", limit = 2) + parts[0].trim() to parts[1].trim() + } hosts.putAll(userHostsMap) }