Fix OpenVPN endpoint view not handling UDP4/TCP4

This commit is contained in:
Davide De Rosa 2022-04-13 11:10:33 +02:00
parent c7f7dd89a1
commit 4a047ece58
1 changed files with 13 additions and 7 deletions

View File

@ -141,7 +141,7 @@ extension EndpointView.OpenVPNView {
themeTextPicker(
L10n.Global.Strings.protocol,
selection: $selectedSocketType,
values: allSocketTypes,
values: availableSocketTypes,
description: \.rawValue
)
themeTextPicker(
@ -213,7 +213,7 @@ extension EndpointView.OpenVPNView {
selectedPort = customEndpoint.proto.port
} else {
isAutomatic = true
guard let socketType = allSocketTypes.first else {
guard let socketType = availableSocketTypes.first else {
assertionFailure("No socket types, empty remotes?")
return
}
@ -234,20 +234,26 @@ extension EndpointView.OpenVPNView {
selectedPort = port
}
private var allSocketTypes: [SocketType] {
private var availableSocketTypes: [SocketType] {
guard let remotes = builder.remotes else {
return []
}
var allTypes: [SocketType] = []
[SocketType.udp, SocketType.tcp].forEach { socketType in
let allTypes: [SocketType] = [
SocketType.udp,
SocketType.tcp,
SocketType.udp4,
SocketType.tcp4
]
var availableTypes: [SocketType] = []
allTypes.forEach { socketType in
guard remotes.contains(where: {
$0.proto.socketType == socketType
}) else {
return
}
allTypes.append(socketType)
availableTypes.append(socketType)
}
return allTypes
return availableTypes
}
private func allPorts(forSocketType socketType: SocketType) -> [UInt16] {