Fix crash on logout

This commit is contained in:
Nicolas Werner 2021-11-01 22:35:32 +01:00
parent 2aabe9dcac
commit 417cc07172
No known key found for this signature in database
GPG Key ID: C8D75E610773F2D9
1 changed files with 25 additions and 23 deletions

View File

@ -969,35 +969,37 @@ Cache::nextBatchToken()
void void
Cache::deleteData() Cache::deleteData()
{ {
this->databaseReady_ = false; if (this->databaseReady_) {
// TODO: We need to remove the env_ while not accepting new requests. this->databaseReady_ = false;
lmdb::dbi_close(env_, syncStateDb_); // TODO: We need to remove the env_ while not accepting new requests.
lmdb::dbi_close(env_, roomsDb_); lmdb::dbi_close(env_, syncStateDb_);
lmdb::dbi_close(env_, invitesDb_); lmdb::dbi_close(env_, roomsDb_);
lmdb::dbi_close(env_, readReceiptsDb_); lmdb::dbi_close(env_, invitesDb_);
lmdb::dbi_close(env_, notificationsDb_); lmdb::dbi_close(env_, readReceiptsDb_);
lmdb::dbi_close(env_, notificationsDb_);
lmdb::dbi_close(env_, devicesDb_); lmdb::dbi_close(env_, devicesDb_);
lmdb::dbi_close(env_, deviceKeysDb_); lmdb::dbi_close(env_, deviceKeysDb_);
lmdb::dbi_close(env_, inboundMegolmSessionDb_); lmdb::dbi_close(env_, inboundMegolmSessionDb_);
lmdb::dbi_close(env_, outboundMegolmSessionDb_); lmdb::dbi_close(env_, outboundMegolmSessionDb_);
lmdb::dbi_close(env_, megolmSessionDataDb_); lmdb::dbi_close(env_, megolmSessionDataDb_);
env_.close(); env_.close();
verification_storage.status.clear(); verification_storage.status.clear();
if (!cacheDirectory_.isEmpty()) { if (!cacheDirectory_.isEmpty()) {
QDir(cacheDirectory_).removeRecursively(); QDir(cacheDirectory_).removeRecursively();
nhlog::db()->info("deleted cache files from disk"); nhlog::db()->info("deleted cache files from disk");
}
deleteSecret(mtx::secret_storage::secrets::megolm_backup_v1);
deleteSecret(mtx::secret_storage::secrets::cross_signing_master);
deleteSecret(mtx::secret_storage::secrets::cross_signing_user_signing);
deleteSecret(mtx::secret_storage::secrets::cross_signing_self_signing);
deleteSecret("pickle_secret", true);
} }
deleteSecret(mtx::secret_storage::secrets::megolm_backup_v1);
deleteSecret(mtx::secret_storage::secrets::cross_signing_master);
deleteSecret(mtx::secret_storage::secrets::cross_signing_user_signing);
deleteSecret(mtx::secret_storage::secrets::cross_signing_self_signing);
deleteSecret("pickle_secret", true);
} }
//! migrates db to the current format //! migrates db to the current format