summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJon Petersson <jon.petersson@kvadrat.se>2023-05-04 15:11:31 +0200
committerAndrej Mihajlov <and@mullvad.net>2023-05-05 10:51:56 +0200
commit1edc451376bd448a8ded8eba17130411b9cf16d0 (patch)
treecdd51eb5871e13297356cbee5daa542784f60b77
parente9526769f91479838da21eb4201e7653b6f03781 (diff)
downloadmullvadvpn-1edc451376bd448a8ded8eba17130411b9cf16d0.tar.xz
mullvadvpn-1edc451376bd448a8ded8eba17130411b9cf16d0.zip
Progate network status when there is no tunnel
-rw-r--r--ios/MullvadVPN/TunnelManager/MapConnectionStatusOperation.swift31
1 files changed, 18 insertions, 13 deletions
diff --git a/ios/MullvadVPN/TunnelManager/MapConnectionStatusOperation.swift b/ios/MullvadVPN/TunnelManager/MapConnectionStatusOperation.swift
index 1083ab5e89..f746ae1778 100644
--- a/ios/MullvadVPN/TunnelManager/MapConnectionStatusOperation.swift
+++ b/ios/MullvadVPN/TunnelManager/MapConnectionStatusOperation.swift
@@ -37,6 +37,8 @@ class MapConnectionStatusOperation: AsyncOperation {
override func main() {
guard let tunnel = interactor.tunnel else {
+ setTunnelDisconnectedStatus()
+
finish()
return
}
@@ -98,12 +100,7 @@ class MapConnectionStatusOperation: AsyncOperation {
interactor.startTunnel()
default:
- interactor.updateTunnelStatus { tunnelStatus in
- tunnelStatus = TunnelStatus()
- tunnelStatus.state = pathStatus == .unsatisfied
- ? .waitingForConnectivity(.noNetwork)
- : .disconnected
- }
+ setTunnelDisconnectedStatus()
}
case .disconnecting:
@@ -112,18 +109,17 @@ class MapConnectionStatusOperation: AsyncOperation {
break
default:
interactor.updateTunnelStatus { tunnelStatus in
+ let packetTunnelStatus = tunnelStatus.packetTunnelStatus
+
tunnelStatus = TunnelStatus()
- tunnelStatus.state = .disconnecting(.nothing)
+ tunnelStatus.state = packetTunnelStatus.isNetworkReachable
+ ? .disconnecting(.nothing)
+ : .waitingForConnectivity(.noNetwork)
}
}
case .invalid:
- interactor.updateTunnelStatus { tunnelStatus in
- tunnelStatus = TunnelStatus()
- tunnelStatus.state = pathStatus == .unsatisfied
- ? .waitingForConnectivity(.noNetwork)
- : .disconnected
- }
+ setTunnelDisconnectedStatus()
@unknown default:
logger.debug("Unknown NEVPNStatus: \(connectionStatus.rawValue)")
@@ -136,6 +132,15 @@ class MapConnectionStatusOperation: AsyncOperation {
request?.cancel()
}
+ private func setTunnelDisconnectedStatus() {
+ interactor.updateTunnelStatus { tunnelStatus in
+ tunnelStatus = TunnelStatus()
+ tunnelStatus.state = pathStatus == .unsatisfied
+ ? .waitingForConnectivity(.noNetwork)
+ : .disconnected
+ }
+ }
+
private func fetchTunnelStatus(
tunnel: Tunnel,
mapToState: @escaping (PacketTunnelStatus) -> TunnelState?