diff --git a/Sources/NetworkProtection/Diagnostics/NetworkProtectionConnectionTester.swift b/Sources/NetworkProtection/Diagnostics/NetworkProtectionConnectionTester.swift index 5336f57aa..382532893 100644 --- a/Sources/NetworkProtection/Diagnostics/NetworkProtectionConnectionTester.swift +++ b/Sources/NetworkProtection/Diagnostics/NetworkProtectionConnectionTester.swift @@ -119,12 +119,7 @@ final class NetworkProtectionConnectionTester { let tunnelInterface = try await networkInterface(forInterfaceNamed: tunnelIfName) self.tunnelInterface = tunnelInterface - do { - try await scheduleTimer(testImmediately: testImmediately) - } catch { - Logger.networkProtectionConnectionTester.log("🔴 Stopping connection tester early") - throw error - } + await scheduleTimer(testImmediately: testImmediately) } func stop() { @@ -163,16 +158,11 @@ final class NetworkProtectionConnectionTester { // MARK: - Timer scheduling - private func scheduleTimer(testImmediately: Bool) async throws { + private func scheduleTimer(testImmediately: Bool) async { stopScheduledTimer() if testImmediately { - do { - try await testConnection() - } catch { - Logger.networkProtectionConnectionTester.log("Rethrowing exception") - throw error - } + await testConnection() } task = Task.periodic(interval: intervalBetweenTests) { [weak self] in @@ -181,7 +171,7 @@ final class NetworkProtectionConnectionTester { // The error we're ignoring here is only used when this class is initialized // with an immediate test, to know whether the connection is up while the user // still sees "Connecting..." - try? await self?.testConnection() + await self?.testConnection() } } @@ -192,7 +182,7 @@ final class NetworkProtectionConnectionTester { // MARK: - Testing the connection - func testConnection() async throws { + func testConnection() async { guard let tunnelInterface = tunnelInterface else { Logger.networkProtectionConnectionTester.error("No interface to test!") return diff --git a/Sources/NetworkProtection/Diagnostics/NetworkProtectionError.swift b/Sources/NetworkProtection/Diagnostics/NetworkProtectionError.swift index a336d57e9..8b4efd112 100644 --- a/Sources/NetworkProtection/Diagnostics/NetworkProtectionError.swift +++ b/Sources/NetworkProtection/Diagnostics/NetworkProtectionError.swift @@ -41,11 +41,6 @@ public enum NetworkProtectionError: LocalizedError, CustomNSError { case failedToEncodeRegisterKeyRequest case failedToFetchRegisteredServers(Error?) case failedToParseRegisteredServersResponse(Error) - case failedToEncodeRedeemRequest - case invalidInviteCode - case failedToRedeemInviteCode(Error?) - case failedToRetrieveAuthToken(AuthenticationFailureResponse) - case failedToParseRedeemResponse(Error) case invalidAuthToken case serverListInconsistency @@ -91,11 +86,6 @@ public enum NetworkProtectionError: LocalizedError, CustomNSError { case .failedToEncodeRegisterKeyRequest: return 104 case .failedToFetchRegisteredServers: return 105 case .failedToParseRegisteredServersResponse: return 106 - case .failedToEncodeRedeemRequest: return 107 - case .invalidInviteCode: return 108 - case .failedToRedeemInviteCode: return 109 - case .failedToRetrieveAuthToken: return 110 - case .failedToParseRedeemResponse: return 111 case .invalidAuthToken: return 112 case .serverListInconsistency: return 113 case .failedToFetchServerStatus: return 114 @@ -130,9 +120,6 @@ public enum NetworkProtectionError: LocalizedError, CustomNSError { .couldNotGetPeerHostName, .couldNotGetInterfaceAddressRange, .failedToEncodeRegisterKeyRequest, - .failedToEncodeRedeemRequest, - .invalidInviteCode, - .failedToRetrieveAuthToken, .invalidAuthToken, .serverListInconsistency, .failedToCastKeychainValueToData, @@ -147,8 +134,7 @@ public enum NetworkProtectionError: LocalizedError, CustomNSError { .vpnAccessRevoked: return [:] case .failedToFetchServerList(let error), - .failedToFetchRegisteredServers(let error), - .failedToRedeemInviteCode(let error): + .failedToFetchRegisteredServers(let error): guard let error else { return [:] } @@ -160,7 +146,6 @@ public enum NetworkProtectionError: LocalizedError, CustomNSError { .failedToFetchLocationList(let error), .failedToParseLocationListResponse(let error), .failedToParseRegisteredServersResponse(let error), - .failedToParseRedeemResponse(let error), .wireGuardSetNetworkSettings(let error), .startWireGuardBackend(let error), .setWireguardConfig(let error), diff --git a/Sources/NetworkProtection/Networking/NetworkProtectionClient.swift b/Sources/NetworkProtection/Networking/NetworkProtectionClient.swift index 369abf92b..2e59d67e9 100644 --- a/Sources/NetworkProtection/Networking/NetworkProtectionClient.swift +++ b/Sources/NetworkProtection/Networking/NetworkProtectionClient.swift @@ -37,11 +37,6 @@ public enum NetworkProtectionClientError: CustomNSError, NetworkProtectionErrorC case failedToEncodeRegisterKeyRequest case failedToFetchRegisteredServers(Error) case failedToParseRegisteredServersResponse(Error) - case failedToEncodeRedeemRequest - case invalidInviteCode - case failedToRedeemInviteCode(Error) - case failedToRetrieveAuthToken(AuthenticationFailureResponse) - case failedToParseRedeemResponse(Error) case invalidAuthToken case accessDenied @@ -56,11 +51,6 @@ public enum NetworkProtectionClientError: CustomNSError, NetworkProtectionErrorC case .failedToEncodeRegisterKeyRequest: return .failedToEncodeRegisterKeyRequest case .failedToFetchRegisteredServers(let error): return .failedToFetchRegisteredServers(error) case .failedToParseRegisteredServersResponse(let error): return .failedToParseRegisteredServersResponse(error) - case .failedToEncodeRedeemRequest: return .failedToEncodeRedeemRequest - case .invalidInviteCode: return .invalidInviteCode - case .failedToRedeemInviteCode(let error): return .failedToRedeemInviteCode(error) - case .failedToRetrieveAuthToken(let response): return .failedToRetrieveAuthToken(response) - case .failedToParseRedeemResponse(let error): return .failedToParseRedeemResponse(error) case .invalidAuthToken: return .invalidAuthToken case .accessDenied: return .vpnAccessRevoked } @@ -75,11 +65,6 @@ public enum NetworkProtectionClientError: CustomNSError, NetworkProtectionErrorC case .failedToEncodeRegisterKeyRequest: return 4 case .failedToFetchRegisteredServers: return 5 case .failedToParseRegisteredServersResponse: return 6 - case .failedToEncodeRedeemRequest: return 7 - case .invalidInviteCode: return 8 - case .failedToRedeemInviteCode: return 9 - case .failedToRetrieveAuthToken: return 10 - case .failedToParseRedeemResponse: return 11 case .invalidAuthToken: return 12 case .accessDenied: return 13 case .failedToFetchServerStatus: return 14 @@ -95,15 +80,10 @@ public enum NetworkProtectionClientError: CustomNSError, NetworkProtectionErrorC .failedToParseServerListResponse(let error), .failedToFetchRegisteredServers(let error), .failedToParseRegisteredServersResponse(let error), - .failedToRedeemInviteCode(let error), - .failedToParseRedeemResponse(let error), .failedToFetchServerStatus(let error), .failedToParseServerStatusResponse(let error): return [NSUnderlyingErrorKey: error as NSError] case .failedToEncodeRegisterKeyRequest, - .failedToEncodeRedeemRequest, - .invalidInviteCode, - .failedToRetrieveAuthToken, .invalidAuthToken, .accessDenied: return [:] @@ -159,10 +139,6 @@ enum RegisterServerSelection { } } -struct RedeemInviteCodeRequestBody: Encodable { - let code: String -} - struct ExchangeAccessTokenRequestBody: Encodable { let token: String } @@ -171,10 +147,6 @@ struct AuthenticationSuccessResponse: Decodable { let token: String } -public struct AuthenticationFailureResponse: Decodable { - public let message: String -} - final class NetworkProtectionBackendClient: NetworkProtectionClient { enum Constants { @@ -435,57 +407,6 @@ final class NetworkProtectionBackendClient: NetworkProtectionClient { } } - private func retrieveAuthToken( - requestBody: RequestBody, - endpoint: URL - ) async -> Result { - let requestBodyData: Data - - do { - requestBodyData = try JSONEncoder().encode(requestBody) - } catch { - return .failure(.failedToEncodeRedeemRequest) - } - - var request = URLRequest(url: endpoint) - request.allHTTPHeaderFields = APIRequest.Headers().httpHeaders - request.addValue("application/json", forHTTPHeaderField: "Content-Type") - request.httpMethod = "POST" - request.httpBody = requestBodyData - - let responseData: Data - - do { - let (data, response) = try await URLSession.shared.data(for: request) - guard let response = response as? HTTPURLResponse else { - throw AuthTokenError.noResponse - } - switch response.statusCode { - case 200: - responseData = data - case 400: - return .failure(.invalidInviteCode) - default: - do { - // Try to redeem the subscription backend error response first: - let decodedRedemptionResponse = try decoder.decode(AuthenticationFailureResponse.self, from: data) - return .failure(.failedToRetrieveAuthToken(decodedRedemptionResponse)) - } catch { - throw AuthTokenError.unexpectedStatus(status: response.statusCode) - } - } - } catch { - return .failure(NetworkProtectionClientError.failedToRedeemInviteCode(error)) - } - - do { - let decodedRedemptionResponse = try decoder.decode(AuthenticationSuccessResponse.self, from: responseData) - return .success(decodedRedemptionResponse.token) - } catch { - return .failure(NetworkProtectionClientError.failedToParseRedeemResponse(error)) - } - } - } extension URL { diff --git a/Sources/NetworkProtection/PacketTunnelProvider.swift b/Sources/NetworkProtection/PacketTunnelProvider.swift index db94999bf..ba1718355 100644 --- a/Sources/NetworkProtection/PacketTunnelProvider.swift +++ b/Sources/NetworkProtection/PacketTunnelProvider.swift @@ -884,7 +884,7 @@ open class PacketTunnelProvider: NEPacketTunnelProvider { // MARK: - Tunnel Stop: Support Methods - /// Do not call this directly. Call `stopTunnel(with:)` or `cancelTunnel(with:)` instead. + /// Do not call this directly, call `cancelTunnel(with:)` instead. /// @MainActor private func stopTunnel() async throws { diff --git a/Tests/NetworkProtectionTests/NetworkProtectionErrorTests.swift b/Tests/NetworkProtectionTests/NetworkProtectionErrorTests.swift index 5cceeaf08..51c393d14 100644 --- a/Tests/NetworkProtectionTests/NetworkProtectionErrorTests.swift +++ b/Tests/NetworkProtectionTests/NetworkProtectionErrorTests.swift @@ -40,8 +40,6 @@ final class NetworkProtectionErrorTests: XCTestCase { .couldNotGetPeerHostName, .couldNotGetInterfaceAddressRange, .failedToEncodeRegisterKeyRequest, - .failedToEncodeRedeemRequest, - .invalidInviteCode, .invalidAuthToken, .serverListInconsistency, .wireGuardCannotLocateTunnelFileDescriptor, @@ -72,8 +70,6 @@ final class NetworkProtectionErrorTests: XCTestCase { .failedToParseLocationListResponse(underlyingError), .failedToFetchRegisteredServers(underlyingError), .failedToParseRegisteredServersResponse(underlyingError), - .failedToRedeemInviteCode(underlyingError), - .failedToParseRedeemResponse(underlyingError), .wireGuardSetNetworkSettings(underlyingError), .startWireGuardBackend(underlyingError), .unhandledError(function: #function, line: #line, error: underlyingError),