matrix-org/matrix-android-sdk

Wrong Sync timeout configuration

Opened this issue · 1 comments

When setting the syncDelay to a custom value, the sync timeout parameter is no longer set to desired value.

Description

  • When building a default session, like below:
    session = MXSession.Builder(hsConfig!!, dataHandler, context).build(); session?.startEventStream(null);

The sync requests are made expected, with the default timeout value (after the first sync):
https://mybaseurl/_matrix/client/r0/sync?filter=%7B%7D&set_presence=offline&timeout=0 https://mybaseurl/_matrix/client/r0/sync?filter=1&set_presence=offline&timeout=30000&since=s94606_169438_162_1_1_1_1_22183_1

  • When building a session with custom syncDelay:
    session = MXSession.Builder(hsConfig!!, dataHandler, context).build(); session?.syncDelay = 20000; session?.startEventStream(null);

The sync requests now are sending the parameter timeout with value 0 all the time (not only for first sync):
https://mybaseurl/_matrix/client/r0/sync?filter=%7B%7D&set_presence=offline&timeout=0 https://mybaseurl/_matrix/client/r0/sync?filter=1&set_presence=offline&timeout=0&since=s94605_169415_162_1_1_1_1_22182_1

  • Moreover, if the syncTimeout is set:
    session?.syncTimeout = 10000

the timeout param in the request still remains the default one:
https://mybaseurl/_matrix/client/r0/sync?filter=1&set_presence=offline&timeout=30000&since=s94606_169438_162_1_1_1_1_22183_1

Additional information
Matrix-Android-Sdk version: v0.9.35
Android Studio version: 4.0.0

Actually, I can see that the server long poll timeout will always be set to at least 30 seconds:

    private static final int DEFAULT_SERVER_TIMEOUT_MS = 30000;

  
    /**
     * Update the long poll timeout.
     *
     * @param ms the timeout in ms
     */
    public void setServerLongPollTimeout(int ms) {
        mDefaultServerTimeoutms = Math.max(ms, DEFAULT_SERVER_TIMEOUT_MS);
        Log.d(LOG_TAG, "setServerLongPollTimeout : " + mDefaultServerTimeoutms);

    }

Is there any plan to extend the functionality to support lower timeout values as well?