Skip to content
This repository has been archived by the owner on Oct 17, 2019. It is now read-only.

Commit

Permalink
Only call /sync when retrying initial sync (#422)
Browse files Browse the repository at this point in the history
  • Loading branch information
mujx committed Aug 30, 2018
1 parent 183975b commit ee2ba93
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 18 deletions.
37 changes: 22 additions & 15 deletions src/ChatPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,8 @@ ChatPage::logout()
void
ChatPage::dropToLoginPage(const QString &msg)
{
nhlog::ui()->info("dropping to the login page: {}", msg.toStdString());

deleteConfigs();
resetUI();

Expand Down Expand Up @@ -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()
{
Expand All @@ -1022,8 +1029,6 @@ ChatPage::trySync()
const auto err_code = mtx::errors::to_string(err->matrix_error.errcode);
const int status_code = static_cast<int>(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;
Expand All @@ -1032,6 +1037,8 @@ ChatPage::trySync()
return;
}

nhlog::net()->error("sync error: {} {}", status_code, err_code);

switch (status_code) {
case 502:
case 504:
Expand Down Expand Up @@ -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<int>(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: {
Expand All @@ -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;
}

Expand Down
1 change: 1 addition & 0 deletions src/ChatPage.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ private slots:
//! 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<std::string, uint16_t> &counts);
Expand Down
4 changes: 1 addition & 3 deletions src/Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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{};
Expand Down Expand Up @@ -277,4 +275,4 @@ utils::humanReadableFingerprint(const QString &ed25519)
fingerprintList << ed25519.mid(i, 4);
}
return fingerprintList.join(" ");
}
}

0 comments on commit ee2ba93

Please sign in to comment.