diff options
Diffstat (limited to 'ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift')
| -rw-r--r-- | ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift index 8e2ac4fad2..d204165c0d 100644 --- a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift +++ b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift @@ -45,20 +45,32 @@ public final class APIRequestProxy: APIRequestProxyProtocol, @unchecked Sendable completion(ProxyAPIResponse(data: nil, error: nil)) return } + do { + let cancellable = try transport.sendRequest(proxyRequest.request) { [weak self] response in + guard let self else { return } - let cancellable = transport.sendRequest(proxyRequest.request) { [weak self] response in - guard let self else { return } - - // Use `dispatchQueue` to guarantee thread safe access to `proxiedRequests` - dispatchQueue.async { - _ = self.removeRequest(identifier: proxyRequest.id) - completion(response) + // Use `dispatchQueue` to guarantee thread safe access to `proxiedRequests` + dispatchQueue.async { + _ = self.removeRequest(identifier: proxyRequest.id) + completion(response) + } } - } - // Cancel old task, if there's one scheduled. - let oldTask = self.addRequest(identifier: proxyRequest.id, task: cancellable) - oldTask?.cancel() + // Cancel old task, if there's one scheduled. + let oldTask = self.addRequest(identifier: proxyRequest.id, task: cancellable) + oldTask?.cancel() + } catch { + completion( + ProxyAPIResponse( + data: nil, + error: APIError( + statusCode: 0, + errorDescription: error.localizedDescription, + serverResponseCode: nil + ) + ) + ) + } } } |
