diff options
author | Roopesh Chander <roop@roopc.net> | 2019-03-11 13:20:21 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2019-03-11 13:20:21 +0530 |
commit | 663923864cb2354a88deca85ca3c5aaaf8972226 (patch) | |
tree | f5b4d765ad7f2f5f784fdff2390f98e6cb5d006b | |
parent | macOS: Ability to remove multiple tunnels at a time (diff) | |
download | wireguard-apple-663923864cb2354a88deca85ca3c5aaaf8972226.tar.xz wireguard-apple-663923864cb2354a88deca85ca3c5aaaf8972226.zip |
TunnelsManager: Don't restart if only on-demand setting has changed
Signed-off-by: Roopesh Chander <roop@roopc.net>
-rw-r--r-- | WireGuard/WireGuard/Tunnel/TunnelsManager.swift | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift index 3f7d9f5..ea5e622 100644 --- a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift +++ b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift @@ -184,7 +184,11 @@ class TunnelsManager { tunnel.name = tunnelName } - tunnelProviderManager.setTunnelConfiguration(tunnelConfiguration) + var isTunnelConfigurationChanged = false + if tunnelProviderManager.tunnelConfiguration != tunnelConfiguration { + tunnelProviderManager.setTunnelConfiguration(tunnelConfiguration) + isTunnelConfigurationChanged = true + } tunnelProviderManager.isEnabled = true let isActivatingOnDemand = !tunnelProviderManager.isOnDemandEnabled && activateOnDemandSetting.isActivateOnDemandEnabled @@ -206,10 +210,12 @@ class TunnelsManager { } self.tunnelsListDelegate?.tunnelModified(at: self.tunnels.firstIndex(of: tunnel)!) - if tunnel.status == .active || tunnel.status == .activating || tunnel.status == .reasserting { - // Turn off the tunnel, and then turn it back on, so the changes are made effective - tunnel.status = .restarting - (tunnel.tunnelProvider.connection as? NETunnelProviderSession)?.stopTunnel() + if isTunnelConfigurationChanged { + if tunnel.status == .active || tunnel.status == .activating || tunnel.status == .reasserting { + // Turn off the tunnel, and then turn it back on, so the changes are made effective + tunnel.status = .restarting + (tunnel.tunnelProvider.connection as? NETunnelProviderSession)?.stopTunnel() + } } if isActivatingOnDemand { |