summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2022-07-28 14:26:17 +0200
committerAndrej Mihajlov <and@mullvad.net>2022-07-28 16:26:05 +0200
commit9613697420561830eb73cbf19fc424909e048bf9 (patch)
tree0fb10bea09861eba2c4aa06c00f4800819925c76
parentbca3c4b7d531c425f431ead391ccd03c684d1a2c (diff)
downloadmullvadvpn-9613697420561830eb73cbf19fc424909e048bf9.tar.xz
mullvadvpn-9613697420561830eb73cbf19fc424909e048bf9.zip
Store PacketTunnelStatus within TunnelStatus to avoid duplicating the same fields
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelManager.swift2
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelManagerState.swift6
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelState.swift21
3 files changed, 11 insertions, 18 deletions
diff --git a/ios/MullvadVPN/TunnelManager/TunnelManager.swift b/ios/MullvadVPN/TunnelManager/TunnelManager.swift
index 57ef51b2af..6b82105427 100644
--- a/ios/MullvadVPN/TunnelManager/TunnelManager.swift
+++ b/ios/MullvadVPN/TunnelManager/TunnelManager.swift
@@ -597,7 +597,7 @@ final class TunnelManager: TunnelManagerStateDelegate {
case .connecting, .reconnecting:
// Start polling tunnel status to keep the relay information up to date
// while the tunnel process is trying to connect.
- startPollingTunnelStatus(connectingDate: newTunnelStatus.connectingDate)
+ startPollingTunnelStatus(connectingDate: newTunnelStatus.packetTunnelStatus.connectingDate)
case .pendingReconnect, .connected, .disconnecting, .disconnected:
// Stop polling tunnel status once connection moved to final state.
diff --git a/ios/MullvadVPN/TunnelManager/TunnelManagerState.swift b/ios/MullvadVPN/TunnelManager/TunnelManagerState.swift
index 002e3e3862..c777052c39 100644
--- a/ios/MullvadVPN/TunnelManager/TunnelManagerState.swift
+++ b/ios/MullvadVPN/TunnelManager/TunnelManagerState.swift
@@ -43,11 +43,7 @@ extension TunnelManager {
private var _isLoadedConfiguration = false
private var _tunnelSettings: TunnelSettingsV2?
private var _tunnelObject: Tunnel?
- private var _tunnelStatus = TunnelStatus(
- isNetworkReachable: false,
- connectingDate: nil,
- state: .disconnected
- )
+ private var _tunnelStatus = TunnelStatus()
var isLoadedConfiguration: Bool {
get {
diff --git a/ios/MullvadVPN/TunnelManager/TunnelState.swift b/ios/MullvadVPN/TunnelManager/TunnelState.swift
index bec15a9044..ee65346f82 100644
--- a/ios/MullvadVPN/TunnelManager/TunnelState.swift
+++ b/ios/MullvadVPN/TunnelManager/TunnelState.swift
@@ -10,25 +10,22 @@ import Foundation
/// A struct describing the tunnel status.
struct TunnelStatus: Equatable, CustomStringConvertible {
- /// Whether netowork is reachable.
- var isNetworkReachable: Bool
-
- /// When the packet tunnel started connecting.
- var connectingDate: Date?
+ /// Tunnel status returned by the tunnel process.
+ var packetTunnelStatus = PacketTunnelStatus()
/// Tunnel state.
- var state: TunnelState
+ var state: TunnelState = .disconnected
var description: String {
var s = "\(state), network "
- if isNetworkReachable {
+ if packetTunnelStatus.isNetworkReachable {
s += "reachable"
} else {
s += "unreachable"
}
- if let connectingDate = connectingDate {
+ if let connectingDate = packetTunnelStatus.connectingDate {
s += ", started connecting at \(connectingDate.logFormatDate())"
}
@@ -37,8 +34,7 @@ struct TunnelStatus: Equatable, CustomStringConvertible {
/// Updates the tunnel status from packet tunnel status, mapping relay to tunnel state.
mutating func update(from packetTunnelStatus: PacketTunnelStatus, mappingRelayToState mapper: (PacketTunnelRelay?) -> TunnelState?) {
- isNetworkReachable = packetTunnelStatus.isNetworkReachable
- connectingDate = packetTunnelStatus.connectingDate
+ self.packetTunnelStatus = packetTunnelStatus
if let newState = mapper(packetTunnelStatus.tunnelRelay) {
state = newState
@@ -47,8 +43,9 @@ struct TunnelStatus: Equatable, CustomStringConvertible {
/// Resets all fields to their defaults and assigns the next tunnel state.
mutating func reset(to newState: TunnelState) {
- isNetworkReachable = true
- connectingDate = nil
+ let currentRelay = packetTunnelStatus.tunnelRelay
+ packetTunnelStatus = PacketTunnelStatus()
+ packetTunnelStatus.tunnelRelay = currentRelay
state = newState
}
}