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:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user