From 0f62cba49853b644405fadefaf8b87c32bc4b9a1 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Sun, 4 Mar 2018 14:49:15 +0200 Subject: Retry initial sync only on specific errors fixes #233 fixes #89 --- src/ChatPage.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/ChatPage.cc') diff --git a/src/ChatPage.cc b/src/ChatPage.cc index 93ae562e..571ac67a 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -361,7 +361,7 @@ ChatPage::ChatPage(QSharedPointer client, }); initialSyncTimer_ = new QTimer(this); - connect(initialSyncTimer_, &QTimer::timeout, this, &ChatPage::retryInitialSync); + connect(initialSyncTimer_, &QTimer::timeout, this, [this]() { retryInitialSync(); }); syncTimeoutTimer_ = new QTimer(this); connect(syncTimeoutTimer_, &QTimer::timeout, this, [this]() { @@ -965,19 +965,30 @@ ChatPage::setGroupViewState(bool isEnabled) } void -ChatPage::retryInitialSync() +ChatPage::retryInitialSync(int status_code) { initialSyncTimer_->stop(); if (client_->getHomeServer().isEmpty()) { deleteConfigs(); + resetUI(); + emit showLoginPage("Sync error. Please try again."); return; } - qWarning() << "Retrying initial sync"; + // Retry on Bad-Gateway & Gateway-Timeout errors + if (status_code == -1 || status_code == 504 || status_code == 502 || status_code == 524) { + qWarning() << "retrying initial sync"; - client_->initialSync(); - initialSyncTimer_->start(INITIAL_SYNC_RETRY_TIMEOUT); + client_->initialSync(); + initialSyncTimer_->start(INITIAL_SYNC_RETRY_TIMEOUT); + } else { + // Drop into the login screen. + deleteConfigs(); + resetUI(); + + emit showLoginPage(QString("Sync error %1. Please try again.").arg(status_code)); + } } void -- cgit 1.5.1