diff options
| author | Jon Petersson <jon.petersson@kvadrat.se> | 2023-05-04 15:11:31 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2023-05-05 10:51:56 +0200 |
| commit | 1edc451376bd448a8ded8eba17130411b9cf16d0 (patch) | |
| tree | cdd51eb5871e13297356cbee5daa542784f60b77 | |
| parent | e9526769f91479838da21eb4201e7653b6f03781 (diff) | |
| download | mullvadvpn-1edc451376bd448a8ded8eba17130411b9cf16d0.tar.xz mullvadvpn-1edc451376bd448a8ded8eba17130411b9cf16d0.zip | |
Progate network status when there is no tunnel
| -rw-r--r-- | ios/MullvadVPN/TunnelManager/MapConnectionStatusOperation.swift | 31 |
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? |
