mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 19:08:58 +03:00
Fix a few db access crashes
This commit is contained in:
parent
2a70847c80
commit
6ad4065de4
2 changed files with 14 additions and 5 deletions
|
@ -787,6 +787,9 @@ Cache::isInitialized()
|
|||
std::string
|
||||
Cache::nextBatchToken()
|
||||
{
|
||||
if (!env_.handle())
|
||||
throw lmdb::error("Env already closed", MDB_INVALID);
|
||||
|
||||
auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY);
|
||||
std::string_view token;
|
||||
|
||||
|
@ -1816,6 +1819,9 @@ Cache::getTimelineRange(const std::string &room_id)
|
|||
std::optional<uint64_t>
|
||||
Cache::getTimelineIndex(const std::string &room_id, std::string_view event_id)
|
||||
{
|
||||
if (event_id.empty() || room_id.empty())
|
||||
return {};
|
||||
|
||||
auto txn = lmdb::txn::begin(env_, nullptr, MDB_RDONLY);
|
||||
|
||||
lmdb::dbi orderDb;
|
||||
|
|
|
@ -873,12 +873,15 @@ ChatPage::trySync()
|
|||
|
||||
http::client()->sync(
|
||||
opts,
|
||||
[this, since = cache::nextBatchToken()](const mtx::responses::Sync &res,
|
||||
mtx::http::RequestErr err) {
|
||||
[this, since = opts.since](const mtx::responses::Sync &res, mtx::http::RequestErr err) {
|
||||
try {
|
||||
if (since != cache::nextBatchToken()) {
|
||||
nhlog::net()->warn("Duplicate sync, dropping");
|
||||
return;
|
||||
}
|
||||
} catch (const lmdb::error &e) {
|
||||
nhlog::db()->warn("Logged out in the mean time, dropping sync");
|
||||
}
|
||||
|
||||
if (err) {
|
||||
const auto error = QString::fromStdString(err->matrix_error.error);
|
||||
|
|
Loading…
Reference in a new issue