Skip to content

Commit 7ac64eb

Browse files
committed
send all dns server to core
1 parent a902227 commit 7ac64eb

File tree

3 files changed

+7
-8
lines changed

3 files changed

+7
-8
lines changed

core/src/main/java/com/github/kr328/clash/core/Clash.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ object Clash {
4949
}
5050

5151
fun notifyDnsChanged(dns: List<String>) {
52-
Bridge.nativeNotifyDnsChanged(dns.joinToString(separator = ","))
52+
Bridge.nativeNotifyDnsChanged(dns.toSet().joinToString(separator = ","))
5353
}
5454

5555
fun notifyTimeZoneChanged(name: String, offset: Int) {

service/src/main/java/com/github/kr328/clash/service/clash/module/NetworkObserveModule.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import android.os.Build
66
import androidx.core.content.getSystemService
77
import com.github.kr328.clash.common.log.Log
88
import com.github.kr328.clash.core.Clash
9-
import com.github.kr328.clash.service.util.resolvePrimaryDns
9+
import com.github.kr328.clash.service.util.resolveDns
1010
import kotlinx.coroutines.NonCancellable
1111
import kotlinx.coroutines.channels.Channel
1212
import kotlinx.coroutines.channels.trySendBlocking
@@ -69,8 +69,8 @@ class NetworkObserveModule(service: Service) : Module<Network?>(service) {
6969
}
7070
}
7171

72-
val dns = networks.mapNotNull {
73-
connectivity.resolvePrimaryDns(it)
72+
val dns = networks.flatMap { network ->
73+
connectivity?.resolveDns(network) ?: emptyList()
7474
}
7575

7676
Clash.notifyDnsChanged(dns)

service/src/main/java/com/github/kr328/clash/service/util/Connectivity.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ package com.github.kr328.clash.service.util
33
import android.net.ConnectivityManager
44
import android.net.Network
55

6-
fun ConnectivityManager.resolvePrimaryDns(network: Network?): String? {
7-
val properties = getLinkProperties(network) ?: return null
8-
9-
return properties.dnsServers.firstOrNull()?.asSocketAddressText(53)
6+
fun ConnectivityManager.resolveDns(network: Network?): List<String> {
7+
val properties = getLinkProperties(network) ?: return listOf()
8+
return properties.dnsServers.map { it.asSocketAddressText(53) }
109
}

0 commit comments

Comments
 (0)