summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2020-07-21 15:49:24 +0300
committerAndrej Mihajlov <and@mullvad.net>2020-07-22 18:35:43 +0300
commitc5732199cdeaff5faaa41add81b4354fb0a62fd1 (patch)
tree561826fc7ab161d1a3e489eeb76ee20fe2e39613
parenta4d112665a93d16eaefc39519a46b82ea599ce7c (diff)
downloadmullvadvpn-c5732199cdeaff5faaa41add81b4354fb0a62fd1.tar.xz
mullvadvpn-c5732199cdeaff5faaa41add81b4354fb0a62fd1.zip
Get rid of AnyEncodable in favor of generic encoding function
-rw-r--r--ios/MullvadVPN.xcodeproj/project.pbxproj6
-rw-r--r--ios/MullvadVPN/AnyEncodable.swift28
-rw-r--r--ios/MullvadVPN/SimulatorTunnelProviderHost.swift33
-rw-r--r--ios/PacketTunnel/PacketTunnelProvider.swift40
4 files changed, 41 insertions, 66 deletions
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj
index e259a3aef0..ecfc79d03c 100644
--- a/ios/MullvadVPN.xcodeproj/project.pbxproj
+++ b/ios/MullvadVPN.xcodeproj/project.pbxproj
@@ -39,8 +39,6 @@
580EE22824B3289300F9D8A1 /* AssociatedValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580EE22724B3289300F9D8A1 /* AssociatedValue.swift */; };
580EE22924B3289300F9D8A1 /* AssociatedValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 580EE22724B3289300F9D8A1 /* AssociatedValue.swift */; };
5811DE50239014550011EB53 /* NEVPNStatus+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5811DE4F239014550011EB53 /* NEVPNStatus+Debug.swift */; };
- 581C9BF524C7096E0059F0C6 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581C9BF424C7096E0059F0C6 /* AnyEncodable.swift */; };
- 581C9BF624C7096E0059F0C6 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581C9BF424C7096E0059F0C6 /* AnyEncodable.swift */; };
581CBCE62296B97300727D7F /* ViewControllerIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581CBCE52296B97300727D7F /* ViewControllerIdentifier.swift */; };
581CBCEC2298041B00727D7F /* SettingsAppVersionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581CBCEB2298041B00727D7F /* SettingsAppVersionCell.swift */; };
581CBCEE229826FD00727D7F /* StaticTableViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 581CBCED229826FD00727D7F /* StaticTableViewDataSource.swift */; };
@@ -244,7 +242,6 @@
580EE22324B3243100F9D8A1 /* AsyncBlockOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncBlockOperation.swift; sourceTree = "<group>"; };
580EE22724B3289300F9D8A1 /* AssociatedValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssociatedValue.swift; sourceTree = "<group>"; };
5811DE4F239014550011EB53 /* NEVPNStatus+Debug.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NEVPNStatus+Debug.swift"; sourceTree = "<group>"; };
- 581C9BF424C7096E0059F0C6 /* AnyEncodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyEncodable.swift; sourceTree = "<group>"; };
581CBCE52296B97300727D7F /* ViewControllerIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerIdentifier.swift; sourceTree = "<group>"; };
581CBCEB2298041B00727D7F /* SettingsAppVersionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppVersionCell.swift; sourceTree = "<group>"; };
581CBCED229826FD00727D7F /* StaticTableViewDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StaticTableViewDataSource.swift; sourceTree = "<group>"; };
@@ -556,7 +553,6 @@
58C6B35322BB87C4003C19AD /* WireguardPrivateKey.swift */,
58F3C098249B978C003E76BE /* x25519.c */,
58F3C097249B978C003E76BE /* x25519.h */,
- 581C9BF424C7096E0059F0C6 /* AnyEncodable.swift */,
);
path = MullvadVPN;
sourceTree = "<group>";
@@ -968,7 +964,6 @@
58C3A4B222456F1B00340BDB /* AccountInputGroupView.swift in Sources */,
58F840B22464491D0044E708 /* ChainedError.swift in Sources */,
58FAEDFF24533A7000CB0F5B /* KeychainReturn.swift in Sources */,
- 581C9BF524C7096E0059F0C6 /* AnyEncodable.swift in Sources */,
580EE20C24B3225F00F9D8A1 /* DelayOperation.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -983,7 +978,6 @@
580EE21F24B3237F00F9D8A1 /* OutputOperation.swift in Sources */,
580EE20224B321DB00F9D8A1 /* OperationProtocol.swift in Sources */,
58FAEE0224533ABB00CB0F5B /* KeychainMatchLimit.swift in Sources */,
- 581C9BF624C7096E0059F0C6 /* AnyEncodable.swift in Sources */,
58FAEE0324533ABE00CB0F5B /* KeychainReturn.swift in Sources */,
58BFA5CD22A7CE1F00A6173D /* ApplicationConfiguration.swift in Sources */,
580EE20724B3222400F9D8A1 /* ExclusivityController.swift in Sources */,
diff --git a/ios/MullvadVPN/AnyEncodable.swift b/ios/MullvadVPN/AnyEncodable.swift
deleted file mode 100644
index b4b27a1507..0000000000
--- a/ios/MullvadVPN/AnyEncodable.swift
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// AnyEncodable.swift
-// MullvadVPN
-//
-// Created by pronebird on 21/07/2020.
-// Copyright © 2020 Mullvad VPN AB. All rights reserved.
-//
-
-import Foundation
-
-extension Encodable {
- fileprivate func encode(to container: inout SingleValueEncodingContainer) throws {
- try container.encode(self)
- }
-}
-
-struct AnyEncodable: Encodable {
- let value: Encodable
-
- init(_ value: Encodable) {
- self.value = value
- }
-
- func encode(to encoder: Encoder) throws {
- var container = encoder.singleValueContainer()
- try value.encode(to: &container)
- }
-}
diff --git a/ios/MullvadVPN/SimulatorTunnelProviderHost.swift b/ios/MullvadVPN/SimulatorTunnelProviderHost.swift
index 3481117f20..5284cd460f 100644
--- a/ios/MullvadVPN/SimulatorTunnelProviderHost.swift
+++ b/ios/MullvadVPN/SimulatorTunnelProviderHost.swift
@@ -46,26 +46,15 @@ class SimulatorTunnelProviderHost: SimulatorTunnelProviderDelegate {
func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)?) {
DispatchQueue.main.async {
- let completeRequest = { (response: AnyEncodable) in
- switch PacketTunnelIpcHandler.encodeResponse(response: response) {
- case .success(let data):
- completionHandler?(data)
-
- case .failure:
- completionHandler?(nil)
- }
-
- }
-
let result = PacketTunnelIpcHandler.decodeRequest(messageData: messageData)
switch result {
case .success(let request):
switch request {
case .reloadTunnelSettings:
- return completeRequest(AnyEncodable(true))
+ return Self.replyAppMessage(true, completionHandler: completionHandler)
case .tunnelInformation:
- return completeRequest(AnyEncodable(self.connectionInfo))
+ return Self.replyAppMessage(self.connectionInfo, completionHandler: completionHandler)
}
case .failure:
@@ -74,6 +63,24 @@ class SimulatorTunnelProviderHost: SimulatorTunnelProviderDelegate {
}
}
+ private static func replyAppMessage<T: Encodable>(
+ _ result: Result<T, PacketTunnelProviderError>,
+ completionHandler: ((Data?) -> Void)?) {
+ let result = result.flatMap { (response) -> Result<Data, PacketTunnelProviderError> in
+ return PacketTunnelIpcHandler.encodeResponse(response: response)
+ .mapError { PacketTunnelProviderError.ipcHandler($0) }
+ }
+
+ switch result {
+ case .success(let data):
+ completionHandler?(data)
+
+ case .failure(let error):
+ error.logChain(log: tunnelProviderLog)
+ completionHandler?(nil)
+ }
+ }
+
}
#endif
diff --git a/ios/PacketTunnel/PacketTunnelProvider.swift b/ios/PacketTunnel/PacketTunnelProvider.swift
index 5c5da30b15..6feaacc53c 100644
--- a/ios/PacketTunnel/PacketTunnelProvider.swift
+++ b/ios/PacketTunnel/PacketTunnelProvider.swift
@@ -180,22 +180,6 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
override func handleAppMessage(_ messageData: Data, completionHandler: ((Data?) -> Void)?) {
dispatchQueue.async {
- let finishWithResult = { (result: Result<AnyEncodable, PacketTunnelProviderError>) in
- let result = result.flatMap { (response) -> Result<Data, PacketTunnelProviderError> in
- return PacketTunnelIpcHandler.encodeResponse(response: response)
- .mapError { PacketTunnelProviderError.ipcHandler($0) }
- }
-
- switch result {
- case .success(let data):
- completionHandler?(data)
-
- case .failure(let error):
- error.logChain(log: tunnelProviderLog)
- completionHandler?(nil)
- }
- }
-
let decodeResult = PacketTunnelIpcHandler.decodeRequest(messageData: messageData)
.mapError { PacketTunnelProviderError.ipcHandler($0) }
@@ -204,15 +188,15 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
switch request {
case .reloadTunnelSettings:
self.reloadTunnelSettings { (result) in
- finishWithResult(result.map { AnyEncodable(true) })
+ Self.replyAppMessage(result.map { true }, completionHandler: completionHandler)
}
case .tunnelInformation:
- finishWithResult(.success(AnyEncodable(self.connectionInfo)))
+ Self.replyAppMessage(.success(self.connectionInfo), completionHandler: completionHandler)
}
case .failure(let error):
- finishWithResult(.failure(error))
+ Self.replyAppMessage(Result<String, PacketTunnelProviderError>.failure(error), completionHandler: completionHandler)
}
}
}
@@ -353,6 +337,24 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
}
}
+ private static func replyAppMessage<T: Encodable>(
+ _ result: Result<T, PacketTunnelProviderError>,
+ completionHandler: ((Data?) -> Void)?) {
+ let result = result.flatMap { (response) -> Result<Data, PacketTunnelProviderError> in
+ return PacketTunnelIpcHandler.encodeResponse(response: response)
+ .mapError { PacketTunnelProviderError.ipcHandler($0) }
+ }
+
+ switch result {
+ case .success(let data):
+ completionHandler?(data)
+
+ case .failure(let error):
+ error.logChain(log: tunnelProviderLog)
+ completionHandler?(nil)
+ }
+ }
+
private func setTunnelConnectionInfo(selectorResult: RelaySelectorResult) {
self.connectionInfo = TunnelConnectionInfo(
ipv4Relay: selectorResult.endpoint.ipv4Relay,