Skip to content
Snippets Groups Projects
Commit 4aa59f6d authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Fix race condition in MessengerStartBackup

parent 93b98fa4
No related branches found
No related tags found
2 merge requests!110Backup improvements & example,!102Release 1.0.0
import Foundation
import XCTestDynamicOverlay import XCTestDynamicOverlay
import XXClient import XXClient
...@@ -33,24 +34,26 @@ extension MessengerStartBackup { ...@@ -33,24 +34,26 @@ extension MessengerStartBackup {
let paramsData = try params.encode() let paramsData = try params.encode()
let paramsString = String(data: paramsData, encoding: .utf8)! let paramsString = String(data: paramsData, encoding: .utf8)!
var didAddParams = false var didAddParams = false
func addParams() { var semaphore: DispatchSemaphore? = .init(value: 0)
guard let backup = env.backup() else { return }
backup.addJSON(paramsString)
didAddParams = true
}
let backup = try env.initializeBackup( let backup = try env.initializeBackup(
e2eId: e2e.getId(), e2eId: e2e.getId(),
udId: ud.getId(), udId: ud.getId(),
password: password, password: password,
callback: .init { data in callback: .init { data in
semaphore?.wait()
if !didAddParams { if !didAddParams {
addParams() if let backup = env.backup() {
backup.addJSON(paramsString)
didAddParams = true
}
} else { } else {
env.backupCallbacks.registered().handle(data) env.backupCallbacks.registered().handle(data)
} }
} }
) )
env.backup.set(backup) env.backup.set(backup)
semaphore?.signal()
semaphore = nil
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment