send all dns server to core

This commit is contained in:
wwqgtxx 2025-03-17 23:00:06 +08:00
parent 4e45661e26
commit 19cc82e0db
3 changed files with 7 additions and 8 deletions

View File

@ -49,7 +49,7 @@ object Clash {
}
fun notifyDnsChanged(dns: List<String>) {
Bridge.nativeNotifyDnsChanged(dns.joinToString(separator = ","))
Bridge.nativeNotifyDnsChanged(dns.toSet().joinToString(separator = ","))
}
fun notifyTimeZoneChanged(name: String, offset: Int) {

View File

@ -6,7 +6,7 @@ import android.os.Build
import androidx.core.content.getSystemService
import com.github.kr328.clash.common.log.Log
import com.github.kr328.clash.core.Clash
import com.github.kr328.clash.service.util.resolvePrimaryDns
import com.github.kr328.clash.service.util.resolveDns
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.trySendBlocking
@ -69,8 +69,8 @@ class NetworkObserveModule(service: Service) : Module<Network?>(service) {
}
}
val dns = networks.mapNotNull {
connectivity.resolvePrimaryDns(it)
val dns = networks.flatMap { network ->
connectivity?.resolveDns(network) ?: emptyList()
}
Clash.notifyDnsChanged(dns)

View File

@ -3,8 +3,7 @@ package com.github.kr328.clash.service.util
import android.net.ConnectivityManager
import android.net.Network
fun ConnectivityManager.resolvePrimaryDns(network: Network?): String? {
val properties = getLinkProperties(network) ?: return null
return properties.dnsServers.firstOrNull()?.asSocketAddressText(53)
fun ConnectivityManager.resolveDns(network: Network?): List<String> {
val properties = getLinkProperties(network) ?: return listOf()
return properties.dnsServers.map { it.asSocketAddressText(53) }
}