From 32582b14a442c35d1a64131ac10792683fb06f82 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Wed, 30 Aug 2017 23:50:54 +0200 Subject: [PATCH] Don't terminate the core due to backend issues while setting up If the authenticator or storage backend selected by the user during core setup cannot be initialized, the problem shall be communicated to the client and the user can start over; the core shall not exit in this case. Ensure that failure to initialize the selected backends only terminates the core if it's not being setup. --- src/core/core.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/core/core.cpp b/src/core/core.cpp index 889d15af..d613e8f8 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -403,10 +403,15 @@ bool Core::initStorage(const QString &backend, const QVariantMap &settings, bool return false; // trigger setup process if (storage->setup(settings)) return initStorage(backend, settings, false); + return false; + // if initialization wasn't successful, we quit to keep from coming up unconfigured case Storage::NotAvailable: qCritical() << "FATAL: Selected storage backend is not available:" << backend; - exit(EXIT_FAILURE); + if (!setup) + exit(EXIT_FAILURE); + return false; + case Storage::IsReady: // delete all other backends _registeredStorageBackends.clear(); @@ -495,10 +500,15 @@ bool Core::initAuthenticator(const QString &backend, const QVariantMap &settings return false; // trigger setup process if (auth->setup(settings)) return initAuthenticator(backend, settings, false); + return false; + // if initialization wasn't successful, we quit to keep from coming up unconfigured case Authenticator::NotAvailable: qCritical() << "FATAL: Selected auth backend is not available:" << backend; - exit(EXIT_FAILURE); + if (!setup) + exit(EXIT_FAILURE); + return false; + case Authenticator::IsReady: // delete all other backends _registeredAuthenticators.clear(); -- 2.20.1