summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrew Bulhak <andrew.bulhak@mullvad.net>2025-05-21 20:55:30 +0200
committerBug Magnet <marco.nikic@mullvad.net>2025-05-26 15:28:02 +0200
commit97f08169ac515989f18cf29e234460ac9d33ba4f (patch)
tree98cd4bba777d3866a5ac37f8b0bd4eae70f998e5
parent5ab5724318ef85077433a5db532f27d1ddba71bb (diff)
downloadmullvadvpn-97f08169ac515989f18cf29e234460ac9d33ba4f.tar.xz
mullvadvpn-97f08169ac515989f18cf29e234460ac9d33ba4f.zip
Make IP Override feature indicator check current tunnel endpoint
-rw-r--r--ios/MullvadREST/Relay/RelaySelectorProtocol.swift4
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift9
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift2
3 files changed, 13 insertions, 2 deletions
diff --git a/ios/MullvadREST/Relay/RelaySelectorProtocol.swift b/ios/MullvadREST/Relay/RelaySelectorProtocol.swift
index 8b84c3a6ba..7b2f91c761 100644
--- a/ios/MullvadREST/Relay/RelaySelectorProtocol.swift
+++ b/ios/MullvadREST/Relay/RelaySelectorProtocol.swift
@@ -53,6 +53,10 @@ public struct SelectedRelays: Equatable, Codable, Sendable {
public let exit: SelectedRelay
public let retryAttempt: UInt
+ public var ingress: SelectedRelay {
+ entry ?? exit
+ }
+
public init(entry: SelectedRelay?, exit: SelectedRelay, retryAttempt: UInt) {
self.entry = entry
self.exit = exit
diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift
index e986476def..dd26aa654f 100644
--- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift
+++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift
@@ -126,10 +126,17 @@ struct DNSFeature: ChipFeature {
}
struct IPOverrideFeature: ChipFeature {
+ let state: TunnelState
let overrides: [IPOverride]
var isEnabled: Bool {
- !overrides.isEmpty
+ guard
+ let endpoint = state.relays?.ingress.endpoint
+ else { return false }
+ return overrides.contains { override in
+ (override.ipv4Address.map { $0 == endpoint.ipv4Relay.ip } ?? false) ||
+ (override.ipv6Address.map { $0 == endpoint.ipv6Relay?.ip } ?? false)
+ }
}
var name: String {
diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift
index 2a4e521919..5458efb7a8 100644
--- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift
+++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift
@@ -39,7 +39,7 @@ class FeatureIndicatorsViewModel: ChipViewModelProtocol {
MultihopFeature(state: tunnelState),
ObfuscationFeature(settings: tunnelSettings, state: observedState),
DNSFeature(settings: tunnelSettings),
- IPOverrideFeature(overrides: ipOverrides),
+ IPOverrideFeature(state: tunnelState, overrides: ipOverrides),
]
return features