Skip to content

Commit d08ee36

Browse files
committed
fix: issue of modification on active tunnel
Signed-off-by: George Kutsurua <[email protected]>
1 parent 23618f9 commit d08ee36

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

Sources/WireGuardApp/Tunnel/TunnelsManager.swift

+6
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,13 @@ class TunnelsManager {
8989
guard let self = self else { return }
9090

9191
let loadedTunnelProviders = managers ?? []
92+
var removedTunnels: [TunnelContainer] = []
9293

9394
for (index, currentTunnel) in self.tunnels.enumerated().reversed() {
9495
if !loadedTunnelProviders.contains(where: { $0.isEquivalentTo(currentTunnel) }) {
9596
// Tunnel was deleted outside the app
9697
self.tunnels.remove(at: index)
98+
removedTunnels.append(currentTunnel)
9799
self.tunnelsListDelegate?.tunnelRemoved(at: index, tunnel: currentTunnel)
98100
}
99101
}
@@ -109,6 +111,10 @@ class TunnelsManager {
109111
}
110112
}
111113
let tunnel = TunnelContainer(tunnel: loadedTunnelProvider)
114+
// Removed tunnel contains programmatically changed status, so we copying it to new one
115+
if let removedTunnel = removedTunnels.first(where: { $0.name == tunnel.name }), [TunnelStatus.restarting, TunnelStatus.reasserting, TunnelStatus.waiting].contains(removedTunnel.status) {
116+
tunnel.status = removedTunnel.status
117+
}
112118
self.tunnels.append(tunnel)
113119
self.tunnels.sort { TunnelsManager.tunnelNameIsLessThan($0.name, $1.name) }
114120
self.tunnelsListDelegate?.tunnelAdded(at: self.tunnels.firstIndex(of: tunnel)!)

0 commit comments

Comments
 (0)