Fix LocalResolver blocking on missing default network

Return `missing default interface` immediately instead of suspending
inside `DefaultNetworkMonitor.require()` when no default network is
available.
This commit is contained in:
世界
2026-04-19 23:57:35 +08:00
parent 2d7efc04a7
commit c8491c9212

View File

@@ -23,8 +23,8 @@ object LocalResolver : LocalDNSTransport {
@RequiresApi(Build.VERSION_CODES.Q) @RequiresApi(Build.VERSION_CODES.Q)
override fun exchange(ctx: ExchangeContext, message: ByteArray) { override fun exchange(ctx: ExchangeContext, message: ByteArray) {
val defaultNetwork = DefaultNetworkMonitor.defaultNetwork ?: error("missing default interface")
return runBlocking { return runBlocking {
val defaultNetwork = DefaultNetworkMonitor.require()
suspendCoroutine { continuation -> suspendCoroutine { continuation ->
val signal = CancellationSignal() val signal = CancellationSignal()
ctx.onCancel(signal::cancel) ctx.onCancel(signal::cancel)
@@ -63,8 +63,8 @@ object LocalResolver : LocalDNSTransport {
} }
override fun lookup(ctx: ExchangeContext, network: String, domain: String) { override fun lookup(ctx: ExchangeContext, network: String, domain: String) {
val defaultNetwork = DefaultNetworkMonitor.defaultNetwork ?: error("missing default interface")
return runBlocking { return runBlocking {
val defaultNetwork = DefaultNetworkMonitor.require()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
suspendCoroutine { continuation -> suspendCoroutine { continuation ->
val signal = CancellationSignal() val signal = CancellationSignal()