Skip to content

Commit 246f0e2

Browse files
committed
Even more fixes
1 parent 4467ab7 commit 246f0e2

File tree

2 files changed

+15
-22
lines changed

2 files changed

+15
-22
lines changed

android/lib/talpid/src/main/kotlin/net/mullvad/talpid/ConnectivityListener.kt

+14-21
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import android.net.ConnectivityManager
44
import android.net.LinkProperties
55
import android.net.Network
66
import android.net.NetworkCapabilities
7-
import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN
87
import android.net.NetworkRequest
98
import co.touchlab.kermit.Logger
109
import java.net.DatagramSocket
10+
import java.net.Inet4Address
11+
import java.net.Inet6Address
1112
import java.net.InetAddress
1213
import kotlin.collections.ArrayList
1314
import kotlinx.coroutines.CoroutineScope
@@ -17,7 +18,6 @@ import kotlinx.coroutines.flow.SharingStarted
1718
import kotlinx.coroutines.flow.StateFlow
1819
import kotlinx.coroutines.flow.combine
1920
import kotlinx.coroutines.flow.distinctUntilChanged
20-
import kotlinx.coroutines.flow.filterIsInstance
2121
import kotlinx.coroutines.flow.map
2222
import kotlinx.coroutines.flow.onEach
2323
import kotlinx.coroutines.flow.scan
@@ -27,7 +27,6 @@ import net.mullvad.talpid.model.Connectivity
2727
import net.mullvad.talpid.model.NetworkState
2828
import net.mullvad.talpid.util.IPAvailabilityUtils
2929
import net.mullvad.talpid.util.NetworkEvent
30-
import net.mullvad.talpid.util.NetworkEvent.CapabilitiesChanged
3130
import net.mullvad.talpid.util.RawNetworkState
3231
import net.mullvad.talpid.util.defaultRawNetworkStateFlow
3332
import net.mullvad.talpid.util.networkEvents
@@ -63,32 +62,25 @@ class ConnectivityListener(
6362
.stateIn(scope, SharingStarted.Eagerly, null)
6463

6564
_isConnected =
66-
combine(
67-
_currentNetworkState,
68-
connectivityManager
69-
.defaultRawNetworkStateFlow()
70-
.filterIsInstance<CapabilitiesChanged>(),
71-
hasInternetCapability(),
72-
) {
73-
currentNetworkState: NetworkState?,
74-
capabilitiesChanged: CapabilitiesChanged,
65+
combine(connectivityManager.defaultRawNetworkStateFlow(), hasInternetCapability()) {
66+
rawNetworkState: RawNetworkState?,
7567
hasInternetCapability: Boolean ->
7668
if (hasInternetCapability) {
77-
if (
78-
capabilitiesChanged.networkCapabilities.hasCapability(
79-
NET_CAPABILITY_NOT_VPN
80-
)
81-
) {
69+
val isUnderlyingNetwork =
70+
rawNetworkState
71+
?.networkCapabilities
72+
?.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) == true
73+
if (isUnderlyingNetwork) {
8274
// If the default network is not a VPN we can check the addresses
8375
// directly
8476
Connectivity.Status(
8577
ipv4 =
86-
currentNetworkState?.routes?.any {
87-
!it.destination.isIpv6
78+
rawNetworkState.linkProperties?.routes?.any {
79+
it.destination.address is Inet4Address
8880
} == true,
8981
ipv6 =
90-
currentNetworkState?.routes?.any {
91-
it.destination.isIpv6
82+
rawNetworkState.linkProperties?.routes?.any {
83+
it.destination.address is Inet6Address
9284
} == true,
9385
)
9486
} else {
@@ -106,6 +98,7 @@ class ConnectivityListener(
10698
Connectivity.Status(false, false)
10799
}
108100
}
101+
.distinctUntilChanged()
109102
.onEach {
110103
when (it) {
111104
Connectivity.PresumeOnline -> notifyConnectivityChange(true, true)

android/lib/talpid/src/main/kotlin/net/mullvad/talpid/util/IPAvailabilityUtils.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ object IPAvailabilityUtils {
2626
protect: (socket: DatagramSocket) -> Boolean,
2727
): Boolean {
2828
val socket = DatagramSocket()
29-
if(!protect(socket)) {
29+
if (!protect(socket)) {
3030
Logger.e("Unable to protect the socket VPN is not set up correctly")
3131
return false
3232
}

0 commit comments

Comments
 (0)