TunnelsManager: Don't restart if only on-demand setting has changed

Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
Roopesh Chander 2019-03-11 13:20:21 +05:30
parent 9250780ffc
commit 663923864c
1 changed files with 11 additions and 5 deletions

View File

@ -184,7 +184,11 @@ class TunnelsManager {
tunnel.name = tunnelName tunnel.name = tunnelName
} }
tunnelProviderManager.setTunnelConfiguration(tunnelConfiguration) var isTunnelConfigurationChanged = false
if tunnelProviderManager.tunnelConfiguration != tunnelConfiguration {
tunnelProviderManager.setTunnelConfiguration(tunnelConfiguration)
isTunnelConfigurationChanged = true
}
tunnelProviderManager.isEnabled = true tunnelProviderManager.isEnabled = true
let isActivatingOnDemand = !tunnelProviderManager.isOnDemandEnabled && activateOnDemandSetting.isActivateOnDemandEnabled let isActivatingOnDemand = !tunnelProviderManager.isOnDemandEnabled && activateOnDemandSetting.isActivateOnDemandEnabled
@ -206,10 +210,12 @@ class TunnelsManager {
} }
self.tunnelsListDelegate?.tunnelModified(at: self.tunnels.firstIndex(of: tunnel)!) self.tunnelsListDelegate?.tunnelModified(at: self.tunnels.firstIndex(of: tunnel)!)
if tunnel.status == .active || tunnel.status == .activating || tunnel.status == .reasserting { if isTunnelConfigurationChanged {
// Turn off the tunnel, and then turn it back on, so the changes are made effective if tunnel.status == .active || tunnel.status == .activating || tunnel.status == .reasserting {
tunnel.status = .restarting // Turn off the tunnel, and then turn it back on, so the changes are made effective
(tunnel.tunnelProvider.connection as? NETunnelProviderSession)?.stopTunnel() tunnel.status = .restarting
(tunnel.tunnelProvider.connection as? NETunnelProviderSession)?.stopTunnel()
}
} }
if isActivatingOnDemand { if isActivatingOnDemand {