summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2023-03-31 17:22:59 +0200
committerAndrej Mihajlov <and@mullvad.net>2023-04-04 16:38:28 +0200
commite061ae83d7cb966c9af76c707a2859dcfd5a3968 (patch)
tree929c6f43839e1a113cf0d752860733212b07aed1
parentcee89b746f050fa5f9f96adbf9ee075fc20beadc (diff)
downloadmullvadvpn-e061ae83d7cb966c9af76c707a2859dcfd5a3968.tar.xz
mullvadvpn-e061ae83d7cb966c9af76c707a2859dcfd5a3968.zip
Replace reconnect tunnel operation with simply block operation
-rw-r--r--ios/MullvadVPN.xcodeproj/project.pbxproj4
-rw-r--r--ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift56
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelManager.swift43
3 files changed, 27 insertions, 76 deletions
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj
index da36add3d1..9931a2cbac 100644
--- a/ios/MullvadVPN.xcodeproj/project.pbxproj
+++ b/ios/MullvadVPN.xcodeproj/project.pbxproj
@@ -106,7 +106,6 @@
5846227326E22A160035F7C2 /* StorePaymentObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5846227226E22A160035F7C2 /* StorePaymentObserver.swift */; };
5846227726E22A7C0035F7C2 /* StorePaymentManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5846227626E22A7C0035F7C2 /* StorePaymentManagerDelegate.swift */; };
5847D58D29B7740F008C3808 /* RevokedCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5847D58C29B7740F008C3808 /* RevokedCoordinator.swift */; };
- 584B17AB27637DE40057F3B8 /* ReconnectTunnelOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 584B17AA27637DE40057F3B8 /* ReconnectTunnelOperation.swift */; };
584D26C2270C8542004EA533 /* SettingsStaticTextFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 584D26C1270C8542004EA533 /* SettingsStaticTextFooterView.swift */; };
584D26C4270C855B004EA533 /* PreferencesDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 584D26C3270C855A004EA533 /* PreferencesDataSource.swift */; };
584D26C6270C8741004EA533 /* SettingsDNSTextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 584D26C5270C8741004EA533 /* SettingsDNSTextCell.swift */; };
@@ -725,7 +724,6 @@
5846227226E22A160035F7C2 /* StorePaymentObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorePaymentObserver.swift; sourceTree = "<group>"; };
5846227626E22A7C0035F7C2 /* StorePaymentManagerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorePaymentManagerDelegate.swift; sourceTree = "<group>"; };
5847D58C29B7740F008C3808 /* RevokedCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RevokedCoordinator.swift; sourceTree = "<group>"; };
- 584B17AA27637DE40057F3B8 /* ReconnectTunnelOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReconnectTunnelOperation.swift; sourceTree = "<group>"; };
584B26F3237434D00073B10E /* RelaySelectorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelaySelectorTests.swift; sourceTree = "<group>"; };
584D0111299134AB00531822 /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; };
584D26BE270C550B004EA533 /* AnyIPAddress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyIPAddress.swift; sourceTree = "<group>"; };
@@ -1198,7 +1196,6 @@
children = (
588527B1276B3F0700BAA373 /* LoadTunnelConfigurationOperation.swift */,
58F2E147276A307400A79513 /* MapConnectionStatusOperation.swift */,
- 584B17AA27637DE40057F3B8 /* ReconnectTunnelOperation.swift */,
58F2E14B276A61C000A79513 /* RotateKeyOperation.swift */,
586E54FA27A2DF6D0029B88B /* SendTunnelProviderMessageOperation.swift */,
588527B3276B4F2F00BAA373 /* SetAccountOperation.swift */,
@@ -2680,7 +2677,6 @@
58E25F812837BBBB002CFB2C /* SceneDelegate.swift in Sources */,
5867771629097C5B006F721F /* ProductState.swift in Sources */,
585E820327F3285E00939F0E /* SendStoreReceiptOperation.swift in Sources */,
- 584B17AB27637DE40057F3B8 /* ReconnectTunnelOperation.swift in Sources */,
5820676426E771DB00655B05 /* TunnelManagerErrors.swift in Sources */,
585B4B8726D9098900555C4C /* TunnelStatusNotificationProvider.swift in Sources */,
063F026628FFE11C001FA09F /* RESTCreateApplePaymentResponse+Localization.swift in Sources */,
diff --git a/ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift b/ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift
deleted file mode 100644
index 2c38566fc1..0000000000
--- a/ios/MullvadVPN/TunnelManager/ReconnectTunnelOperation.swift
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// ReconnectTunnelOperation.swift
-// MullvadVPN
-//
-// Created by pronebird on 10/12/2021.
-// Copyright © 2021 Mullvad VPN AB. All rights reserved.
-//
-
-import Foundation
-import MullvadREST
-import MullvadTypes
-import Operations
-import RelayCache
-import RelaySelector
-
-class ReconnectTunnelOperation: ResultOperation<Void> {
- private let interactor: TunnelInteractor
- private let selectNewRelay: Bool
- private var task: Cancellable?
-
- init(
- dispatchQueue: DispatchQueue,
- interactor: TunnelInteractor,
- selectNewRelay: Bool
- ) {
- self.interactor = interactor
- self.selectNewRelay = selectNewRelay
-
- super.init(dispatchQueue: dispatchQueue)
- }
-
- override func main() {
- guard let tunnel = interactor.tunnel else {
- finish(result: .failure(UnsetTunnelError()))
- return
- }
-
- do {
- let selectorResult = selectNewRelay ? try interactor.selectRelay() : nil
-
- task = tunnel
- .reconnectTunnel(
- relaySelectorResult: selectorResult
- ) { [weak self] result in
- self?.finish(result: result)
- }
- } catch {
- finish(result: .failure(error))
- }
- }
-
- override func operationDidCancel() {
- task?.cancel()
- task = nil
- }
-}
diff --git a/ios/MullvadVPN/TunnelManager/TunnelManager.swift b/ios/MullvadVPN/TunnelManager/TunnelManager.swift
index 74c2127059..d72c314c3e 100644
--- a/ios/MullvadVPN/TunnelManager/TunnelManager.swift
+++ b/ios/MullvadVPN/TunnelManager/TunnelManager.swift
@@ -323,21 +323,34 @@ final class TunnelManager: StorePaymentObserver {
operationQueue.addOperation(operation)
}
- func reconnectTunnel(
- selectNewRelay: Bool,
- completionHandler: ((Error?) -> Void)? = nil
- ) {
- let operation = ReconnectTunnelOperation(
- dispatchQueue: internalQueue,
- interactor: TunnelInteractorProxy(self),
- selectNewRelay: selectNewRelay
- )
+ func reconnectTunnel(selectNewRelay: Bool, completionHandler: ((Error?) -> Void)? = nil) {
+ let operation = AsyncBlockOperation(dispatchQueue: internalQueue) { operation in
+ guard let tunnel = self.tunnel else {
+ operation.finish(error: UnsetTunnelError())
+ return
+ }
- operation.completionQueue = .main
- operation.completionHandler = { [weak self] result in
- self?.didReconnectTunnel(error: result.error)
+ do {
+ let selectorResult = selectNewRelay ? try self.selectRelay() : nil
+
+ let task = tunnel.reconnectTunnel(relaySelectorResult: selectorResult) { result in
+ operation.finish(error: result.error)
+ }
- completionHandler?(result.error)
+ operation.addCancellationBlock {
+ task.cancel()
+ }
+ } catch {
+ operation.finish(error: error)
+ }
+ }
+
+ operation.completionBlock = {
+ DispatchQueue.main.async {
+ self.didReconnectTunnel(error: operation.error)
+
+ completionHandler?(operation.error)
+ }
}
operation.addObserver(
@@ -347,9 +360,7 @@ final class TunnelManager: StorePaymentObserver {
cancelUponExpiration: true
)
)
- operation.addCondition(
- MutuallyExclusive(category: OperationCategory.manageTunnel.category)
- )
+ operation.addCondition(MutuallyExclusive(category: OperationCategory.manageTunnel.category))
operationQueue.addOperation(operation)
}