From 2d9b1b13bfb355e96613ea3afe3c06043933ee11 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Fri, 17 Apr 2026 21:23:30 +0300 Subject: [PATCH] Improved network and DNS server update --- .../com/tutpro/baresip/BaresipService.kt | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt index fbb69c25..f14886f2 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt @@ -1935,7 +1935,7 @@ class BaresipService: Service() { private fun updateNetwork() { if (!isNativeReady) return - updateDnsServers() + val dnsChanged = updateDnsServers() val addresses = linkAddresses() if (linkAddresses != addresses) @@ -1960,10 +1960,10 @@ class BaresipService: Service() { } val active = cm.activeNetwork - if (added != removed || activeNetwork != active) - Log.d(TAG, "Added/Removed = $added/$removed Old/New Active = $activeNetwork/$active") + if (added != removed || activeNetwork != active || dnsChanged) + Log.d(TAG, "Added/Removed = $added/$removed Old/New Active = $activeNetwork/$active DNS Changed = $dnsChanged") - if (added > 0 || removed > 0 || active != activeNetwork) { + if (added > 0 || removed > 0 || active != activeNetwork || dnsChanged) { Api.net_debug() linkAddresses = addresses activeNetwork = active @@ -1994,13 +1994,14 @@ class BaresipService: Service() { synchronized(allNetworks) { for (n in allNetworks) { val caps = cm.getNetworkCapabilities(n) ?: continue - if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_FOREGROUND)) { + if (caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_FOREGROUND) || + caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN) + ) { val props = cm.getLinkProperties(n) ?: continue for (la in props.linkAddresses) if (la.scope == OsConstants.RT_SCOPE_UNIVERSE && - props.interfaceName != null && la.address.hostAddress != null && - afMatch(la.address.hostAddress!!) - ) + props.interfaceName != null && la.address.hostAddress != null && + afMatch(la.address.hostAddress!!)) addresses[la.address.hostAddress!!] = props.interfaceName!! } } @@ -2021,9 +2022,9 @@ class BaresipService: Service() { } } - private fun updateDnsServers() { + private fun updateDnsServers(): Boolean { if (isServiceRunning && !dynDns) - return + return false val servers = mutableListOf() // Use DNS servers first from active network (if available) val activeNetwork = cm.activeNetwork @@ -2047,8 +2048,10 @@ class BaresipService: Service() { } else { // Log.d(TAG, "Updated DNS servers: '${servers}'") dnsServers = servers + return true } } + return false } private fun registerAndroidContactsObserver() {