From ee2ba93ec487051ac6883a65da2472a6d105f5cf Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Thu, 30 Aug 2018 13:39:09 +0300 Subject: [PATCH] Only call /sync when retrying initial sync (#422) --- src/ChatPage.cpp | 37 ++++++++++++++++++++++--------------- src/ChatPage.h | 1 + src/Utils.cpp | 4 +--- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 250d106..ea8b159 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -626,6 +626,8 @@ ChatPage::logout() void ChatPage::dropToLoginPage(const QString &msg) { + nhlog::ui()->info("dropping to the login page: {}", msg.toStdString()); + deleteConfigs(); resetUI(); @@ -987,18 +989,23 @@ ChatPage::tryInitialSync() nhlog::net()->info( "uploaded {} {} one-time keys", entry.second, entry.first); - nhlog::net()->info("trying initial sync"); - - mtx::http::SyncOpts opts; - opts.timeout = 0; - http::client()->sync(opts, - std::bind(&ChatPage::initialSyncHandler, - this, - std::placeholders::_1, - std::placeholders::_2)); + startInitialSync(); }); } +void +ChatPage::startInitialSync() +{ + nhlog::net()->info("trying initial sync"); + + mtx::http::SyncOpts opts; + opts.timeout = 0; + http::client()->sync( + opts, + std::bind( + &ChatPage::initialSyncHandler, this, std::placeholders::_1, std::placeholders::_2)); +} + void ChatPage::trySync() { @@ -1022,8 +1029,6 @@ ChatPage::trySync() const auto err_code = mtx::errors::to_string(err->matrix_error.errcode); const int status_code = static_cast(err->status_code); - nhlog::net()->error("sync error: {} {}", status_code, err_code); - if (status_code <= 0 || status_code >= 600) { if (!http::is_logged_in()) return; @@ -1032,6 +1037,8 @@ ChatPage::trySync() return; } + nhlog::net()->error("sync error: {} {}", status_code, err_code); + switch (status_code) { case 502: case 504: @@ -1166,13 +1173,13 @@ ChatPage::initialSyncHandler(const mtx::responses::Sync &res, mtx::http::Request const auto err_code = mtx::errors::to_string(err->matrix_error.errcode); const int status_code = static_cast(err->status_code); - nhlog::net()->error("sync error: {} {}", status_code, err_code); + nhlog::net()->error("initial sync error: {} {}", status_code, err_code); switch (status_code) { case 502: case 504: case 524: { - emit tryInitialSyncCb(); + startInitialSync(); return; } default: { @@ -1192,8 +1199,8 @@ ChatPage::initialSyncHandler(const mtx::responses::Sync &res, mtx::http::Request emit initializeViews(std::move(res.rooms)); emit initializeRoomList(cache::client()->roomInfo()); } catch (const lmdb::error &e) { - nhlog::db()->error("{}", e.what()); - emit tryInitialSyncCb(); + nhlog::db()->error("failed to save state after initial sync: {}", e.what()); + startInitialSync(); return; } diff --git a/src/ChatPage.h b/src/ChatPage.h index a74748e..5bb7eca 100644 --- a/src/ChatPage.h +++ b/src/ChatPage.h @@ -163,6 +163,7 @@ private: //! Handler callback for initial sync. It doesn't run on the main thread so all //! communication with the GUI should be done through signals. void initialSyncHandler(const mtx::responses::Sync &res, mtx::http::RequestErr err); + void startInitialSync(); void tryInitialSync(); void trySync(); void ensureOneTimeKeyCount(const std::map &counts); diff --git a/src/Utils.cpp b/src/Utils.cpp index d6fff47..ceca53f 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -124,8 +124,6 @@ utils::getMessageDescription(const TimelineEvent &event, info.datetime = ts; return info; - } else { - std::cout << "type not found: " << serialize_event(event).dump(2) << '\n'; } return DescInfo{}; @@ -277,4 +275,4 @@ utils::humanReadableFingerprint(const QString &ed25519) fingerprintList << ed25519.mid(i, 4); } return fingerprintList.join(" "); -} \ No newline at end of file +}