aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/Tunnel
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-03-17 10:28:27 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2019-03-18 06:46:55 +0100
commitb2b5e0e3798af928f90c24531182ec0ae5ed7c58 (patch)
tree6c4f5f2e7dc420e5f177a28a1bbedbffb2461182 /WireGuard/WireGuard/Tunnel
parentringlogger: support mpsc for singlefile (diff)
downloadwireguard-apple-b2b5e0e3798af928f90c24531182ec0ae5ed7c58.tar.xz
wireguard-apple-b2b5e0e3798af928f90c24531182ec0ae5ed7c58.zip
TunnelName: sort correctly with numbers and capitals
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'WireGuard/WireGuard/Tunnel')
-rw-r--r--WireGuard/WireGuard/Tunnel/TunnelsManager.swift11
1 files changed, 7 insertions, 4 deletions
diff --git a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
index ea5e622..1a467f5 100644
--- a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
+++ b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
@@ -28,7 +28,7 @@ class TunnelsManager {
private var configurationsObservationToken: AnyObject?
init(tunnelProviders: [NETunnelProviderManager]) {
- tunnels = tunnelProviders.map { TunnelContainer(tunnel: $0) }.sorted { $0.name < $1.name }
+ tunnels = tunnelProviders.map { TunnelContainer(tunnel: $0) }.sorted { TunnelsManager.tunnelNameIsLessThan($0.name, $1.name) }
startObservingTunnelStatuses()
startObservingTunnelConfigurations()
}
@@ -90,7 +90,7 @@ class TunnelsManager {
}
let tunnel = TunnelContainer(tunnel: loadedTunnelProvider)
self.tunnels.append(tunnel)
- self.tunnels.sort { $0.name < $1.name }
+ self.tunnels.sort { TunnelsManager.tunnelNameIsLessThan($0.name, $1.name) }
self.tunnelsListDelegate?.tunnelAdded(at: self.tunnels.firstIndex(of: tunnel)!)
}
}
@@ -142,7 +142,7 @@ class TunnelsManager {
let tunnel = TunnelContainer(tunnel: tunnelProviderManager)
self.tunnels.append(tunnel)
- self.tunnels.sort { $0.name < $1.name }
+ self.tunnels.sort { TunnelsManager.tunnelNameIsLessThan($0.name, $1.name) }
self.tunnelsListDelegate?.tunnelAdded(at: self.tunnels.firstIndex(of: tunnel)!)
completionHandler(.success(tunnel))
}
@@ -204,7 +204,7 @@ class TunnelsManager {
guard let self = self else { return }
if isNameChanged {
let oldIndex = self.tunnels.firstIndex(of: tunnel)!
- self.tunnels.sort { $0.name < $1.name }
+ self.tunnels.sort { TunnelsManager.tunnelNameIsLessThan($0.name, $1.name) }
let newIndex = self.tunnels.firstIndex(of: tunnel)!
self.tunnelsListDelegate?.tunnelMoved(from: oldIndex, to: newIndex)
}
@@ -400,6 +400,9 @@ class TunnelsManager {
}
}
+ static func tunnelNameIsLessThan(_ a: String, _ b: String) -> Bool {
+ return a.compare(b, options: [.caseInsensitive, .diacriticInsensitive, .widthInsensitive, .numeric]) == .orderedAscending
+ }
}
private func lastErrorTextFromNetworkExtension(for tunnel: TunnelContainer) -> (title: String, message: String)? {