aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/GpgCoreInit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/GpgCoreInit.cpp')
-rw-r--r--src/core/GpgCoreInit.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/core/GpgCoreInit.cpp b/src/core/GpgCoreInit.cpp
index a5f86207..18fa2965 100644
--- a/src/core/GpgCoreInit.cpp
+++ b/src/core/GpgCoreInit.cpp
@@ -75,6 +75,7 @@ auto GetDefaultKeyDatabasePath(const QString& gpgconf_path) -> QString {
if (GlobalSettingStation::GetInstance().IsProtableMode()) {
default_db_path =
GlobalSettingStation::GetInstance().GetAppDataPath() + "/db";
+ LOG_D() << "default key db in protable mode:" << default_db_path;
} else {
if (gpgconf_path.isEmpty()) return {};
@@ -516,15 +517,26 @@ auto InitGpgFrontendCore(CoreInitArgs args) -> int {
}
auto key_dbs = GetKeyDatabaseInfoBySettings();
+ assert(!key_dbs.isEmpty());
+
+ if (key_dbs.isEmpty()) {
+ FLOG_E() << "Cannot find any valid key database!"
+ << "GpgFrontend cannot start under this situation!";
+ Module::UpsertRTValue("core", "env.state.ctx", -1);
+ CoreSignalStation::GetInstance()->SignalBadGnupgEnv(
+ QCoreApplication::tr("No valid KEy Database"));
+ }
// load default context
auto& default_ctx = GpgFrontend::GpgContext::CreateInstance(
kGpgFrontendDefaultChannel, [=]() -> ChannelObjectPtr {
GpgFrontend::GpgContextInitArgs args;
- const auto& default_key_db_info = key_dbs.front();
- args.db_name = default_key_db_info.name;
- args.db_path = default_key_db_info.path;
+ if (!key_dbs.isEmpty()) {
+ const auto& default_key_db_info = key_dbs.front();
+ args.db_name = default_key_db_info.name;
+ args.db_path = default_key_db_info.path;
+ }
args.offline_mode = forbid_all_gnupg_connection;
args.auto_import_missing_key = auto_import_missing_key;