summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPN/RelayCacheTracker
diff options
context:
space:
mode:
authorJon Petersson <jon.petersson@kvadrat.se>2024-01-15 16:46:09 +0100
committerJon Petersson <jon.petersson@kvadrat.se>2024-02-07 11:08:48 +0100
commit758e217c05d23ccffdaa80db48edfe2b1cc1464d (patch)
treed9f4c4b354a553dcdbd9b8ac6cf281fe9407c987 /ios/MullvadVPN/RelayCacheTracker
parent446ef2b026bebce7d877226a7db0551496acbf28 (diff)
downloadmullvadvpn-758e217c05d23ccffdaa80db48edfe2b1cc1464d.tar.xz
mullvadvpn-758e217c05d23ccffdaa80db48edfe2b1cc1464d.zip
Relay selector should use overridden IP addresses for relays
Diffstat (limited to 'ios/MullvadVPN/RelayCacheTracker')
-rw-r--r--ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift26
1 files changed, 16 insertions, 10 deletions
diff --git a/ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift b/ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift
index eb9050318f..67a8145020 100644
--- a/ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift
+++ b/ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift
@@ -21,6 +21,7 @@ protocol RelayCacheTrackerProtocol {
func getNextUpdateDate() -> Date
func addObserver(_ observer: RelayCacheTrackerObserver)
func removeObserver(_ observer: RelayCacheTrackerObserver)
+ func refreshCachedRelays() throws
}
final class RelayCacheTracker: RelayCacheTrackerProtocol {
@@ -144,6 +145,20 @@ final class RelayCacheTracker: RelayCacheTrackerProtocol {
}
}
+ func refreshCachedRelays() throws {
+ let newCachedRelays = try cache.read()
+
+ nslock.lock()
+ cachedRelays = newCachedRelays
+ nslock.unlock()
+
+ DispatchQueue.main.async {
+ self.observerList.forEach { observer in
+ observer.relayCacheTracker(self, didUpdateCachedRelays: newCachedRelays)
+ }
+ }
+ }
+
func getNextUpdateDate() -> Date {
nslock.lock()
defer { nslock.unlock() }
@@ -208,17 +223,8 @@ final class RelayCacheTracker: RelayCacheTrackerProtocol {
updatedAt: Date()
)
- nslock.lock()
- cachedRelays = newCachedRelays
- nslock.unlock()
-
try cache.write(record: newCachedRelays)
-
- DispatchQueue.main.async {
- self.observerList.forEach { observer in
- observer.relayCacheTracker(self, didUpdateCachedRelays: newCachedRelays)
- }
- }
+ try refreshCachedRelays()
}
private func scheduleRepeatingTimer(startTime: DispatchWallTime) {