Ensure that the application is cleanly terminated (by stopping
the main event loop instead of just exiting) when core
initialization fails. This allows for proper cleanup, shutting
down threads etc.
CoreSettings s;
if (s.version() != 1) {
qCritical() << "Invalid core settings version, terminating!";
CoreSettings s;
if (s.version() != 1) {
qCritical() << "Invalid core settings version, terminating!";
+ QCoreApplication::exit(EXIT_FAILURE);
+ return false;
}
// Set up storage and authentication backends
}
// Set up storage and authentication backends
}
if (Quassel::isOptionSet("select-backend") || Quassel::isOptionSet("select-authenticator")) {
}
if (Quassel::isOptionSet("select-backend") || Quassel::isOptionSet("select-authenticator")) {
if (Quassel::isOptionSet("select-backend")) {
if (Quassel::isOptionSet("select-backend")) {
- selectBackend(Quassel::optionValue("select-backend"));
+ success &= selectBackend(Quassel::optionValue("select-backend"));
}
if (Quassel::isOptionSet("select-authenticator")) {
}
if (Quassel::isOptionSet("select-authenticator")) {
- selectAuthenticator(Quassel::optionValue("select-authenticator"));
+ success &= selectAuthenticator(Quassel::optionValue("select-authenticator"));
+ QCoreApplication::exit(success ? EXIT_SUCCESS : EXIT_FAILURE);
+ return success;
if (!_configured) {
qWarning() << "Cannot configure from environment";
if (!_configured) {
qWarning() << "Cannot configure from environment";
+ QCoreApplication::exit(EXIT_FAILURE);
+ return false;
<< qPrintable(tr("Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
"Qt library with the sqlite or postgres plugin enabled in order for quasselcore\n"
"to work."));
<< qPrintable(tr("Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
"Qt library with the sqlite or postgres plugin enabled in order for quasselcore\n"
"to work."));
- exit(EXIT_FAILURE); // TODO make this less brutal (especially for mono client -> popup)
+ QCoreApplication::exit(EXIT_FAILURE); // TODO make this less brutal (especially for mono client -> popup)
+ return false;
}
if (writeError) {
qWarning() << "Cannot write quasselcore configuration; probably a permission problem.";
}
if (writeError) {
qWarning() << "Cannot write quasselcore configuration; probably a permission problem.";
+ QCoreApplication::exit(EXIT_FAILURE);
+ return false;
}
quInfo() << "Core is currently not configured! Please connect with a Quassel Client for basic setup.";
}
quInfo() << "Core is currently not configured! Please connect with a Quassel Client for basic setup.";
}
else {
if (Quassel::isOptionSet("add-user")) {
}
else {
if (Quassel::isOptionSet("add-user")) {
- exit(createUser() ? EXIT_SUCCESS : EXIT_FAILURE);
+ bool success = createUser();
+ QCoreApplication::exit(success ? EXIT_SUCCESS : EXIT_FAILURE);
+ return success;
}
if (Quassel::isOptionSet("change-userpass")) {
}
if (Quassel::isOptionSet("change-userpass")) {
- exit(changeUserPass(Quassel::optionValue("change-userpass")) ? EXIT_SUCCESS : EXIT_FAILURE);
+ bool success = changeUserPass(Quassel::optionValue("change-userpass"));
+ QCoreApplication::exit(success ? EXIT_SUCCESS : EXIT_FAILURE);
+ return success;
}
_strictIdentEnabled = Quassel::isOptionSet("strict-ident");
}
_strictIdentEnabled = Quassel::isOptionSet("strict-ident");
connect(&_v6server, SIGNAL(newConnection()), this, SLOT(incomingConnection()));
if (!startListening()) {
connect(&_v6server, SIGNAL(newConnection()), this, SLOT(incomingConnection()));
if (!startListening()) {
- exit(EXIT_FAILURE); // TODO make this less brutal
+ QCoreApplication::exit(EXIT_FAILURE); // TODO make this less brutal
+ return false;
}
if (_configured && !Quassel::isOptionSet("norestore")) {
}
if (_configured && !Quassel::isOptionSet("norestore")) {
// 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;
// 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;
- if (!setup)
- exit(EXIT_FAILURE);
+ if (!setup) {
+ QCoreApplication::exit(EXIT_FAILURE);
+ }
return false;
case Storage::IsReady:
return false;
case Storage::IsReady:
// 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;
// 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;
- if (!setup)
- exit(EXIT_FAILURE);
+ if (!setup) {
+ QCoreApplication::exit(EXIT_FAILURE);
+ }
return false;
case Authenticator::IsReady:
return false;
case Authenticator::IsReady: