fixed #45: Terminate servatrice if critical error in e.g. listen() happens during initialization
This commit is contained in:
parent
875610e1b3
commit
7c8b3fc5e3
3 changed files with 28 additions and 19 deletions
|
@ -165,15 +165,17 @@ int main(int argc, char *argv[])
|
||||||
Servatrice *server = new Servatrice(settings);
|
Servatrice *server = new Servatrice(settings);
|
||||||
QObject::connect(server, SIGNAL(logDebugMessage(QString, void *)), logger, SLOT(logMessage(QString, void *)));
|
QObject::connect(server, SIGNAL(logDebugMessage(QString, void *)), logger, SLOT(logMessage(QString, void *)));
|
||||||
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()), Qt::QueuedConnection);
|
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()), Qt::QueuedConnection);
|
||||||
|
int retval = 0;
|
||||||
std::cerr << "-------------------------" << std::endl;
|
if (server->initServer()) {
|
||||||
std::cerr << "Server initialized." << std::endl;
|
std::cerr << "-------------------------" << std::endl;
|
||||||
|
std::cerr << "Server initialized." << std::endl;
|
||||||
qInstallMsgHandler(myMessageOutput);
|
|
||||||
int retval = app.exec();
|
qInstallMsgHandler(myMessageOutput);
|
||||||
|
retval = app.exec();
|
||||||
std::cerr << "Server quit." << std::endl;
|
|
||||||
std::cerr << "-------------------------" << std::endl;
|
std::cerr << "Server quit." << std::endl;
|
||||||
|
std::cerr << "-------------------------" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
delete rng;
|
delete rng;
|
||||||
delete settings;
|
delete settings;
|
||||||
|
|
|
@ -64,6 +64,16 @@ void Servatrice_IslServer::incomingConnection(int socketDescriptor)
|
||||||
|
|
||||||
Servatrice::Servatrice(QSettings *_settings, QObject *parent)
|
Servatrice::Servatrice(QSettings *_settings, QObject *parent)
|
||||||
: Server(parent), dbMutex(QMutex::Recursive), settings(_settings), uptime(0), shutdownTimer(0)
|
: Server(parent), dbMutex(QMutex::Recursive), settings(_settings), uptime(0), shutdownTimer(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Servatrice::~Servatrice()
|
||||||
|
{
|
||||||
|
prepareDestroy();
|
||||||
|
QSqlDatabase::database().close();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Servatrice::initServer()
|
||||||
{
|
{
|
||||||
serverName = settings->value("server/name").toString();
|
serverName = settings->value("server/name").toString();
|
||||||
serverId = settings->value("server/id", 0).toInt();
|
serverId = settings->value("server/id", 0).toInt();
|
||||||
|
@ -192,10 +202,10 @@ Servatrice::Servatrice(QSettings *_settings, QObject *parent)
|
||||||
if (islServer->listen(QHostAddress::Any, networkPort))
|
if (islServer->listen(QHostAddress::Any, networkPort))
|
||||||
qDebug() << "ISL server listening.";
|
qDebug() << "ISL server listening.";
|
||||||
else
|
else
|
||||||
throw QString("islServer->listen(): Error.");
|
throw QString("islServer->listen()");
|
||||||
|
|
||||||
} } catch (QString error) {
|
} } catch (QString error) {
|
||||||
qDebug() << "ERROR --" << error;
|
qDebug() << "ERROR --" << error;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
pingClock = new QTimer(this);
|
pingClock = new QTimer(this);
|
||||||
|
@ -216,15 +226,11 @@ Servatrice::Servatrice(QSettings *_settings, QObject *parent)
|
||||||
qDebug() << "Starting server on port" << gamePort;
|
qDebug() << "Starting server on port" << gamePort;
|
||||||
if (gameServer->listen(QHostAddress::Any, gamePort))
|
if (gameServer->listen(QHostAddress::Any, gamePort))
|
||||||
qDebug() << "Server listening.";
|
qDebug() << "Server listening.";
|
||||||
else
|
else {
|
||||||
qDebug() << "gameServer->listen(): Error.";
|
qDebug() << "gameServer->listen(): Error.";
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
Servatrice::~Servatrice()
|
|
||||||
{
|
|
||||||
prepareDestroy();
|
|
||||||
QSqlDatabase::database().close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Servatrice::openDatabase()
|
bool Servatrice::openDatabase()
|
||||||
|
|
|
@ -88,6 +88,7 @@ public:
|
||||||
mutable QMutex dbMutex;
|
mutable QMutex dbMutex;
|
||||||
Servatrice(QSettings *_settings, QObject *parent = 0);
|
Servatrice(QSettings *_settings, QObject *parent = 0);
|
||||||
~Servatrice();
|
~Servatrice();
|
||||||
|
bool initServer();
|
||||||
bool openDatabase();
|
bool openDatabase();
|
||||||
bool checkSql();
|
bool checkSql();
|
||||||
bool execSqlQuery(QSqlQuery &query);
|
bool execSqlQuery(QSqlQuery &query);
|
||||||
|
|
Loading…
Reference in a new issue