diff options
author | Roopesh Chander <roop@roopc.net> | 2018-12-19 15:38:00 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2018-12-19 15:38:00 +0530 |
commit | fa51e3f1d1636374341b7bf07967626af9e97b91 (patch) | |
tree | d12d7c0e6599ef37ea5d405e99d2f4dac77f8397 /WireGuard/WireGuardNetworkExtension/ErrorNotifier.swift | |
parent | NE: No need for two startTunnel() methods (diff) | |
download | wireguard-apple-fa51e3f1d1636374341b7bf07967626af9e97b91.tar.xz wireguard-apple-fa51e3f1d1636374341b7bf07967626af9e97b91.zip |
NE: Handle bad domain names and Activate On Demand
This combination causes iOS to keep trying to bring up the tunnel,
leading to a lot of displayMessage() alerts.
In this fix, if we get a DNS resolution error in an Activate On Demand
enabled tunnel, we silently retry 9 times (with a 4-second delay before
each retry) and then show the displayMessage() alert.
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuardNetworkExtension/ErrorNotifier.swift')
-rw-r--r-- | WireGuard/WireGuardNetworkExtension/ErrorNotifier.swift | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/WireGuard/WireGuardNetworkExtension/ErrorNotifier.swift b/WireGuard/WireGuardNetworkExtension/ErrorNotifier.swift index c392233..02fbd4c 100644 --- a/WireGuard/WireGuardNetworkExtension/ErrorNotifier.swift +++ b/WireGuard/WireGuardNetworkExtension/ErrorNotifier.swift @@ -18,8 +18,12 @@ class ErrorNotifier { switch error { case .savedProtocolConfigurationIsInvalid: return ("Activation failure", "Could not retrieve tunnel information from the saved configuration") - case .dnsResolutionFailure: - return ("DNS resolution failure", "One or more endpoint domains could not be resolved") + case .dnsResolutionFailure(let tunnelName, let isActivateOnDemandEnabled): + if isActivateOnDemandEnabled { + return ("DNS resolution failure", "This tunnel has Activate On Demand enabled, so activation might be retried. You may turn off Activate On Demand in the WireGuard app by navigating to: '\(tunnelName)' > Edit") + } else { + return ("DNS resolution failure", "One or more endpoint domains could not be resolved") + } case .couldNotStartWireGuard: return ("Activation failure", "WireGuard backend could not be started") case .coultNotSetNetworkSettings: |