Skip to content

Commit b56e1bb

Browse files
author
kar
committed
pull a PR fix for TunnelsTracker status
May be relevant. WireGuard/wireguard-apple#7
1 parent 18a31e3 commit b56e1bb

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
@@ -90,11 +90,13 @@ class TunnelsManager {
9090
guard let self = self else { return }
9191

9292
let loadedTunnelProviders = managers ?? []
93+
var removedTunnels: [TunnelContainer] = []
9394

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

0 commit comments

Comments
 (0)