Skip to content

Commit 52c87f4

Browse files
committed
Ensure hosts results are used
Fixes #2412.
1 parent e9dc275 commit 52c87f4

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

core/src/main/java/com/github/shadowsocks/net/HostsFile.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
package com.github.shadowsocks.net
2222

2323
import com.github.shadowsocks.utils.parseNumericAddress
24-
import java.net.Inet4Address
25-
import java.net.Inet6Address
2624
import java.net.InetAddress
2725

2826
class HostsFile(input: String = "") {
@@ -36,9 +34,5 @@ class HostsFile(input: String = "") {
3634
}
3735

3836
val configuredHostnames get() = map.size
39-
fun resolve(hostname: String, isIpv6: Boolean): List<InetAddress> {
40-
return (map[hostname] ?: return emptyList()).run {
41-
if (isIpv6) filterIsInstance<Inet6Address>() else filterIsInstance<Inet4Address>()
42-
}.shuffled()
43-
}
37+
fun resolve(hostname: String) = map[hostname] ?: emptyList<InetAddress>()
4438
}

core/src/main/java/com/github/shadowsocks/net/LocalDnsServer.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,12 @@ class LocalDnsServer(private val localResolver: suspend (String) -> Array<InetAd
124124
else -> return@supervisorScope remote.await()
125125
}
126126
val host = question.name.canonicalize().toString(true)
127-
val hostsResults = hosts.resolve(host, isIpv6)
127+
val hostsResults = hosts.resolve(host)
128128
if (hostsResults.isNotEmpty()) {
129129
remote.cancel()
130-
return@supervisorScope cookDnsResponse(request, hostsResults)
130+
return@supervisorScope cookDnsResponse(request, hostsResults.run {
131+
if (isIpv6) filterIsInstance<Inet6Address>() else filterIsInstance<Inet4Address>()
132+
}.shuffled())
131133
}
132134
val acl = acl?.await() ?: return@supervisorScope remote.await()
133135
val useLocal = when (acl.shouldBypass(host)) {

0 commit comments

Comments
 (0)