From 1d6a61506a7e27491ed6b7a5c74a897d50abafdf Mon Sep 17 00:00:00 2001 From: joshliebe Date: Mon, 6 Jul 2026 13:12:32 +0100 Subject: [PATCH] Fix AppTP unregister crash --- .../mobile/android/vpn/service/DnsChangeCallback.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/service/DnsChangeCallback.kt b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/service/DnsChangeCallback.kt index 135157d973bd..a840416c760b 100644 --- a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/service/DnsChangeCallback.kt +++ b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/service/DnsChangeCallback.kt @@ -44,6 +44,7 @@ class DnsChangeCallback @Inject constructor( context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager? } private var lastDns: List? = null + private var registered: Boolean = false override fun onLinkPropertiesChanged(network: Network, linkProperties: LinkProperties) { logcat { "onLinkPropertiesChanged: $linkProperties" } @@ -68,22 +69,27 @@ class DnsChangeCallback @Inject constructor( } internal fun register() { + if (registered) return kotlin.runCatching { val request = NetworkRequest.Builder().apply { addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) addTransportType(NetworkCapabilities.TRANSPORT_WIFI) }.build() connectivityManager?.registerNetworkCallback(request, this) + registered = true }.onFailure { logcat(ERROR) { it.asLog() } } } internal fun unregister() { + if (!registered) return kotlin.runCatching { connectivityManager?.unregisterNetworkCallback(this) }.onFailure { logcat(ERROR) { it.asLog() } + }.also { + registered = false } }