Skip to content

Commit 1d6a615

Browse files
committed
Fix AppTP unregister crash
1 parent cdbae61 commit 1d6a615

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

  • app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/service

app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/service/DnsChangeCallback.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class DnsChangeCallback @Inject constructor(
4444
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?
4545
}
4646
private var lastDns: List<InetAddress>? = null
47+
private var registered: Boolean = false
4748

4849
override fun onLinkPropertiesChanged(network: Network, linkProperties: LinkProperties) {
4950
logcat { "onLinkPropertiesChanged: $linkProperties" }
@@ -68,22 +69,27 @@ class DnsChangeCallback @Inject constructor(
6869
}
6970

7071
internal fun register() {
72+
if (registered) return
7173
kotlin.runCatching {
7274
val request = NetworkRequest.Builder().apply {
7375
addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
7476
addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
7577
}.build()
7678
connectivityManager?.registerNetworkCallback(request, this)
79+
registered = true
7780
}.onFailure {
7881
logcat(ERROR) { it.asLog() }
7982
}
8083
}
8184

8285
internal fun unregister() {
86+
if (!registered) return
8387
kotlin.runCatching {
8488
connectivityManager?.unregisterNetworkCallback(this)
8589
}.onFailure {
8690
logcat(ERROR) { it.asLog() }
91+
}.also {
92+
registered = false
8793
}
8894
}
8995

0 commit comments

Comments
 (0)