summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2023-11-14 09:51:13 +0100
committerBug Magnet <marco.nikic@mullvad.net>2023-11-14 09:51:13 +0100
commitd57f06a679463fa1373c2258ec3331e0dea4dec0 (patch)
tree699c5b7ce87ffcc2111b0a8bf524efae1c2b13f0
parent24219c66cc9d51d7fc26a3b610be3b6cbba56941 (diff)
parent35b51fef7a4030a60d0e250010e13c12171b7caa (diff)
downloadmullvadvpn-d57f06a679463fa1373c2258ec3331e0dea4dec0.tar.xz
mullvadvpn-d57f06a679463fa1373c2258ec3331e0dea4dec0.zip
Merge branch 'exclude-build-folder-from-swiftlint-ios-382'
-rw-r--r--ios/.swiftlint.yml1
-rw-r--r--ios/MullvadVPN/AppDelegate.swift23
-rw-r--r--ios/PacketTunnelCore/Actor/PacketTunnelActor.swift82
3 files changed, 68 insertions, 38 deletions
diff --git a/ios/.swiftlint.yml b/ios/.swiftlint.yml
index 5a66346daa..1d834d4954 100644
--- a/ios/.swiftlint.yml
+++ b/ios/.swiftlint.yml
@@ -18,6 +18,7 @@ included: # case-sensitive paths to include during linting. `--path` is ignored
excluded: # case-sensitive paths to ignore during linting. Takes precedence over `included`
- AdditionalAssets
- Assets
+ - Build
- Configurations
- MullvadVPNScreenshots
diff --git a/ios/MullvadVPN/AppDelegate.swift b/ios/MullvadVPN/AppDelegate.swift
index bd8265b50c..ec1ae45900 100644
--- a/ios/MullvadVPN/AppDelegate.swift
+++ b/ios/MullvadVPN/AppDelegate.swift
@@ -69,16 +69,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
)
tunnelStore = TunnelStore(application: application)
-
- tunnelManager = TunnelManager(
- application: application,
- tunnelStore: tunnelStore,
- relayCacheTracker: relayCacheTracker,
- accountsProxy: accountsProxy,
- devicesProxy: devicesProxy,
- apiProxy: apiProxy,
- accessTokenManager: proxyFactory.configuration.accessTokenManager
- )
+ tunnelManager = createTunnelManager(application: application)
let constraintsUpdater = RelayConstraintsUpdater()
relayConstraintsObserver = TunnelBlockObserver(didUpdateTunnelSettings: { _, settings in
@@ -122,6 +113,18 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
return true
}
+ private func createTunnelManager(application: UIApplication) -> TunnelManager {
+ return TunnelManager(
+ application: application,
+ tunnelStore: tunnelStore,
+ relayCacheTracker: relayCacheTracker,
+ accountsProxy: accountsProxy,
+ devicesProxy: devicesProxy,
+ apiProxy: apiProxy,
+ accessTokenManager: proxyFactory.configuration.accessTokenManager
+ )
+ }
+
private func setUpProxies(containerURL: URL) {
proxyFactory = REST.ProxyFactory.makeProxyFactory(
transportProvider: REST.AnyTransportProvider { [weak self] in
diff --git a/ios/PacketTunnelCore/Actor/PacketTunnelActor.swift b/ios/PacketTunnelCore/Actor/PacketTunnelActor.swift
index 8d432ae3d1..6f72ef9085 100644
--- a/ios/PacketTunnelCore/Actor/PacketTunnelActor.swift
+++ b/ios/PacketTunnelCore/Actor/PacketTunnelActor.swift
@@ -281,23 +281,14 @@ extension PacketTunnelActor {
settings: Settings,
reason: ReconnectReason
) throws -> ConnectionState? {
- let relayConstraints = settings.relayConstraints
- let privateKey = settings.privateKey
-
switch state {
case .initial:
- return ConnectionState(
- selectedRelay: try selectRelay(
- nextRelay: nextRelay,
- relayConstraints: relayConstraints,
- currentRelay: nil,
- connectionAttemptCount: 0
- ),
- relayConstraints: relayConstraints,
- currentKey: privateKey,
+ return try makeConnectionStateInner(
+ nextRelay: nextRelay,
+ settings: settings,
keyPolicy: .useCurrent,
networkReachability: defaultPathObserver.defaultPath?.networkReachability ?? .undetermined,
- connectionAttemptCount: 0
+ lastKeyRotation: nil
)
case var .connecting(connState), var .reconnecting(connState):
@@ -312,6 +303,8 @@ extension PacketTunnelActor {
fallthrough
case var .connected(connState):
+ let relayConstraints = settings.relayConstraints
+
connState.selectedRelay = try selectRelay(
nextRelay: nextRelay,
relayConstraints: relayConstraints,
@@ -319,23 +312,16 @@ extension PacketTunnelActor {
connectionAttemptCount: connState.connectionAttemptCount
)
connState.relayConstraints = relayConstraints
- connState.currentKey = privateKey
+ connState.currentKey = settings.privateKey
return connState
case let .error(blockedState):
- return ConnectionState(
- selectedRelay: try selectRelay(
- nextRelay: nextRelay,
- relayConstraints: relayConstraints,
- currentRelay: nil,
- connectionAttemptCount: 0
- ),
- relayConstraints: relayConstraints,
- currentKey: privateKey,
+ return try makeConnectionStateInner(
+ nextRelay: nextRelay,
+ settings: settings,
keyPolicy: blockedState.keyPolicy,
networkReachability: blockedState.networkReachability,
- connectionAttemptCount: 0,
lastKeyRotation: blockedState.lastKeyRotation
)
@@ -345,13 +331,51 @@ extension PacketTunnelActor {
}
/**
+ Create a connection state when `State` is either `.inital` or `.error`.
+
+ - Parameters:
+ - nextRelay: Next relay to connect to.
+ - settings: Current settings.
+ - keyPolicy: Current key that should be used by the tunnel.
+ - networkReachability: Network connectivity outside of tunnel.
+ - lastKeyRotation: Last time packet tunnel rotated the key.
+
+ - Returns: New connection state, or `nil` if new relay cannot be selected.
+ */
+ private func makeConnectionStateInner(
+ nextRelay: NextRelay,
+ settings: Settings,
+ keyPolicy: KeyPolicy,
+ networkReachability: NetworkReachability,
+ lastKeyRotation: Date?
+ ) throws -> ConnectionState? {
+ let relayConstraints = settings.relayConstraints
+ let privateKey = settings.privateKey
+
+ return ConnectionState(
+ selectedRelay: try selectRelay(
+ nextRelay: nextRelay,
+ relayConstraints: relayConstraints,
+ currentRelay: nil,
+ connectionAttemptCount: 0
+ ),
+ relayConstraints: relayConstraints,
+ currentKey: privateKey,
+ keyPolicy: keyPolicy,
+ networkReachability: networkReachability,
+ connectionAttemptCount: 0,
+ lastKeyRotation: lastKeyRotation
+ )
+ }
+
+ /**
Select next relay to connect to based on `NextRelay` and other input parameters.
- Parameters:
- - nextRelay: next relay to connect to.
- - relayConstraints: relay constraints.
- - currentRelay: currently selected relay.
- - connectionAttemptCount: number of failed connection attempts so far.
+ - nextRelay: next relay to connect to.
+ - relayConstraints: relay constraints.
+ - currentRelay: currently selected relay.
+ - connectionAttemptCount: number of failed connection attempts so far.
- Returns: selector result that contains the credentials of the next relay that the tunnel should connect to.
*/
@@ -383,3 +407,5 @@ extension PacketTunnelActor {
}
extension PacketTunnelActor: PacketTunnelActorProtocol {}
+
+// swiftlint:disable:this file_length