From 5bfa12885289e095bedc10d28958676c5b49e736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Mon, 4 Nov 2019 17:30:27 -0500 Subject: [PATCH] dbus: ignore invalid answer from daemon Change-Id: Ie548b6c7f536cf673f0df1b0a11bb793cff11adc --- src/database.cpp | 19 +++++++++++++++++-- src/newaccountmodel.cpp | 10 ++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/database.cpp b/src/database.cpp index 13a5026f..db0b827b 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -605,6 +605,14 @@ LegacyDatabase::migrateLocalProfiles() const QStringList accountIds = ConfigurationManager::instance().getAccountList(); for (auto accountId : accountIds) { + // NOTE: If the daemon is down, but dbus answered, id can contains + // "Remote peer disconnected", "The name is not activable", etc. + // So avoid to migrate useless directories. + for (auto& id : accountIds) + if (id.indexOf(" ") != -1) { + qWarning() << "Invalid dbus answer. Daemon not running"; + return; + } MapStringString account = ConfigurationManager::instance(). getAccountDetails(accountId.toStdString().c_str()); auto accountURI = account[DRing::Account::ConfProperties::USERNAME].contains("ring:") ? @@ -847,9 +855,16 @@ LegacyDatabase::migrateSchemaFromVersion1() void LegacyDatabase::linkRingProfilesWithAccounts(bool contactsOnly) { - const QStringList accountIds = - ConfigurationManager::instance().getAccountList(); + const QStringList accountIds = ConfigurationManager::instance().getAccountList(); for (auto accountId : accountIds) { + // NOTE: If the daemon is down, but dbus answered, id can contains + // "Remote peer disconnected", "The name is not activable", etc. + // So avoid to migrate useless directories. + for (auto& id : accountIds) + if (id.indexOf(" ") != -1) { + qWarning() << "Invalid dbus answer. Daemon not running"; + return; + } MapStringString account = ConfigurationManager::instance(). getAccountDetails(accountId.toStdString().c_str()); auto accountURI = account[DRing::Account::ConfProperties::USERNAME].contains("ring:") ? diff --git a/src/newaccountmodel.cpp b/src/newaccountmodel.cpp index f24c162d..dd60a51c 100644 --- a/src/newaccountmodel.cpp +++ b/src/newaccountmodel.cpp @@ -339,6 +339,16 @@ NewAccountModelPimpl::NewAccountModelPimpl(NewAccountModel& linked, , username_changed(false) { const QStringList accountIds = ConfigurationManager::instance().getAccountList(); + + // NOTE: If the daemon is down, but dbus answered, id can contains + // "Remote peer disconnected", "The name is not activable", etc. + // So avoid to migrate useless directories. + for (auto& id : accountIds) + if (id.indexOf(" ") != -1) { + qWarning() << "Invalid dbus answer. Daemon not running"; + return; + } + auto accountDbs = authority::storage::migrateIfNeeded(accountIds, willMigrateCb, didMigrateCb); for (const auto& id : accountIds) { addToAccounts(id.toStdString(), accountDbs.at(accountIds.indexOf(id))); -- GitLab