From 4e2e2649fcf7160adb0408a605e003c150d93b95 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Tue, 29 Apr 2025 19:00:15 +0300 Subject: [PATCH] Set a total request max retry time for network requests originating in the notification service extension. --- ElementX/Sources/Other/Extensions/ClientBuilder.swift | 8 ++++++-- NSE/Sources/Other/NSEUserSession.swift | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ElementX/Sources/Other/Extensions/ClientBuilder.swift b/ElementX/Sources/Other/Extensions/ClientBuilder.swift index 835aaaf3d..d49a2cfea 100644 --- a/ElementX/Sources/Other/Extensions/ClientBuilder.swift +++ b/ElementX/Sources/Other/Extensions/ClientBuilder.swift @@ -16,13 +16,17 @@ extension ClientBuilder { sessionDelegate: ClientSessionDelegate, appHooks: AppHooks, enableOnlySignedDeviceIsolationMode: Bool, - requestTimeout: UInt64? = 30000) -> ClientBuilder { + requestTimeout: UInt64? = 30000, + maxRequestRetryTime: UInt64? = nil) -> ClientBuilder { var builder = ClientBuilder() .crossProcessStoreLocksHolderName(holderName: InfoPlistReader.main.bundleIdentifier) .enableOidcRefreshLock() .setSessionDelegate(sessionDelegate: sessionDelegate) .userAgent(userAgent: UserAgentBuilder.makeASCIIUserAgent()) - .requestConfig(config: .init(retryLimit: 0, timeout: requestTimeout, maxConcurrentRequests: nil, maxRetryTime: nil)) + .requestConfig(config: .init(retryLimit: 0, + timeout: requestTimeout, + maxConcurrentRequests: nil, + maxRetryTime: maxRequestRetryTime)) .useEventCachePersistentStorage(value: true) builder = switch slidingSync { diff --git a/NSE/Sources/Other/NSEUserSession.swift b/NSE/Sources/Other/NSEUserSession.swift index ce620444f..eb59817d9 100644 --- a/NSE/Sources/Other/NSEUserSession.swift +++ b/NSE/Sources/Other/NSEUserSession.swift @@ -39,7 +39,8 @@ final class NSEUserSession { sessionDelegate: clientSessionDelegate, appHooks: appHooks, enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode, - requestTimeout: 15000) + requestTimeout: 15000, + maxRequestRetryTime: 5000) .systemIsMemoryConstrained() .sessionPaths(dataPath: credentials.restorationToken.sessionDirectories.dataPath, cachePath: credentials.restorationToken.sessionDirectories.cachePath)