diff --git a/modules/xmpp/ResumeTask.js b/modules/xmpp/ResumeTask.js index 7f33c6bcce..b1b1e4a77a 100644 --- a/modules/xmpp/ResumeTask.js +++ b/modules/xmpp/ResumeTask.js @@ -32,6 +32,13 @@ export default class ResumeTask { this._retryDelay = undefined; } + /** + * @returns {number} - The amount of retries. + */ + get retryCount() { + return this._resumeRetryN; + } + /** * @returns {number|undefined} - How much the app will wait before trying to resume the XMPP connection. When * 'undefined' it means that no resume task was not scheduled. @@ -81,7 +88,6 @@ export default class ResumeTask { // 1st retry: 1.5s - 3s // 2nd retry: 3s - 9s // 3rd and next retry: 4.5s - 27s - this._resumeRetryN = Math.min(3, this._resumeRetryN); this._retryDelay = getJitterDelay( /* retry */ this._resumeRetryN, /* minDelay */ this._resumeRetryN * 1500, diff --git a/modules/xmpp/XmppConnection.js b/modules/xmpp/XmppConnection.js index 721b934379..c2a88aa849 100644 --- a/modules/xmpp/XmppConnection.js +++ b/modules/xmpp/XmppConnection.js @@ -10,6 +10,11 @@ import PingConnectionPlugin from './strophe.ping'; const logger = getLogger(__filename); +/** + * Maximum number of tries to resume. + */ +const MAX_RESUME_TRIES = 3; + /** * The lib-jitsi-meet layer for {@link Strophe.Connection}. */ @@ -644,7 +649,13 @@ export default class XmppConnection extends Listenable { if (resumeToken) { this._resumeTask.schedule(); - return true; + const r = this._resumeTask.retryCount <= MAX_RESUME_TRIES; + + if (!r) { + logger.warn(`Maximum resume tries reached (${MAX_RESUME_TRIES}), giving up.`); + } + + return r; } return false;