From 663923864cb2354a88deca85ca3c5aaaf8972226 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Mon, 11 Mar 2019 13:20:21 +0530 Subject: TunnelsManager: Don't restart if only on-demand setting has changed Signed-off-by: Roopesh Chander --- WireGuard/WireGuard/Tunnel/TunnelsManager.swift | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'WireGuard/WireGuard/Tunnel/TunnelsManager.swift') 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 { -- cgit v1.2.3-59-g8ed1b