Skip to content

Commit 64c612d

Browse files
committed
F-Droid version: ensure timeout of sync request can be more than 60 seconds (#2169)
1 parent 8dff0b2 commit 64c612d

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

CHANGES.md

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Improvements 🙌:
99
- Handle events of type "m.room.server_acl" (#890)
1010

1111
Bugfix 🐛:
12+
- F-Droid version: ensure timeout of sync request can be more than 60 seconds (#2169)
1213
- Fix issue when restoring draft after sharing (#2287)
1314
- Fix issue when updating the avatar of a room (new avatar vanishing)
1415
- Discard change dialog displayed by mistake when avatar has been updated

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/TimeOutInterceptor.kt

+3
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,8 @@ internal class TimeOutInterceptor @Inject constructor() : Interceptor {
5252
const val CONNECT_TIMEOUT = "CONNECT_TIMEOUT"
5353
const val READ_TIMEOUT = "READ_TIMEOUT"
5454
const val WRITE_TIMEOUT = "WRITE_TIMEOUT"
55+
56+
// 1 minute
57+
const val DEFAULT_LONG_TIMEOUT: Long = 60_000
5558
}
5659
}

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncAPI.kt

+8-5
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,21 @@
1717
package org.matrix.android.sdk.internal.session.sync
1818

1919
import org.matrix.android.sdk.internal.network.NetworkConstants
20+
import org.matrix.android.sdk.internal.network.TimeOutInterceptor
2021
import org.matrix.android.sdk.internal.session.sync.model.SyncResponse
2122
import retrofit2.Call
2223
import retrofit2.http.GET
23-
import retrofit2.http.Headers
24+
import retrofit2.http.Header
2425
import retrofit2.http.QueryMap
2526

2627
internal interface SyncAPI {
27-
2828
/**
29-
* Set all the timeouts to 1 minute
29+
* Set all the timeouts to 1 minute by default
3030
*/
31-
@Headers("CONNECT_TIMEOUT:60000", "READ_TIMEOUT:60000", "WRITE_TIMEOUT:60000")
3231
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "sync")
33-
fun sync(@QueryMap params: Map<String, String>): Call<SyncResponse>
32+
fun sync(@QueryMap params: Map<String, String>,
33+
@Header(TimeOutInterceptor.CONNECT_TIMEOUT) connectTimeOut: Long = TimeOutInterceptor.DEFAULT_LONG_TIMEOUT,
34+
@Header(TimeOutInterceptor.READ_TIMEOUT) readTimeOut: Long = TimeOutInterceptor.DEFAULT_LONG_TIMEOUT,
35+
@Header(TimeOutInterceptor.WRITE_TIMEOUT) writeTimeOut: Long = TimeOutInterceptor.DEFAULT_LONG_TIMEOUT
36+
): Call<SyncResponse>
3437
}

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt

+11-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package org.matrix.android.sdk.internal.session.sync
1919
import org.greenrobot.eventbus.EventBus
2020
import org.matrix.android.sdk.R
2121
import org.matrix.android.sdk.internal.di.UserId
22+
import org.matrix.android.sdk.internal.network.TimeOutInterceptor
2223
import org.matrix.android.sdk.internal.network.executeRequest
2324
import org.matrix.android.sdk.internal.session.DefaultInitialSyncProgressService
2425
import org.matrix.android.sdk.internal.session.filter.FilterRepository
@@ -78,13 +79,22 @@ internal class DefaultSyncTask @Inject constructor(
7879
// Maybe refresh the home server capabilities data we know
7980
getHomeServerCapabilitiesTask.execute(Unit)
8081

82+
val readTimeOut = (params.timeout + TIMEOUT_MARGIN).coerceAtLeast(TimeOutInterceptor.DEFAULT_LONG_TIMEOUT)
83+
8184
val syncResponse = executeRequest<SyncResponse>(eventBus) {
82-
apiCall = syncAPI.sync(requestParams)
85+
apiCall = syncAPI.sync(
86+
params = requestParams,
87+
readTimeOut = readTimeOut
88+
)
8389
}
8490
syncResponseHandler.handleResponse(syncResponse, token)
8591
if (isInitialSync) {
8692
initialSyncProgressService.endAll()
8793
}
8894
Timber.v("Sync task finished on Thread: ${Thread.currentThread().name}")
8995
}
96+
97+
companion object {
98+
private const val TIMEOUT_MARGIN: Long = 10_000
99+
}
90100
}

0 commit comments

Comments
 (0)