/***************************************************************************
- * Copyright (C) 2005-2015 by the Quassel Project *
+ * Copyright (C) 2005-2016 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QCoreApplication>
#include <QDateTime>
+#include <QDir>
#include <QFileInfo>
#include <QHostAddress>
#include <QLibraryInfo>
#include "logger.h"
#include "message.h"
#include "network.h"
+#include "peer.h"
#include "protocol.h"
#include "syncableobject.h"
#include "types.h"
// We catch SIGTERM and SIGINT (caused by Ctrl+C) to graceful shutdown Quassel.
signal(SIGTERM, handleSignal);
signal(SIGINT, handleSignal);
+#ifndef Q_OS_WIN
+ // SIGHUP is used to reload configuration (i.e. SSL certificates)
+ // Windows does not support SIGHUP
+ signal(SIGHUP, handleSignal);
+#endif
}
qRegisterMetaType<MsgId>("MsgId");
qRegisterMetaType<QHostAddress>("QHostAddress");
+ qRegisterMetaTypeStreamOperators<QHostAddress>("QHostAddress");
qRegisterMetaType<QUuid>("QUuid");
+ qRegisterMetaTypeStreamOperators<QUuid>("QUuid");
qRegisterMetaTypeStreamOperators<IdentityId>("IdentityId");
qRegisterMetaTypeStreamOperators<BufferId>("BufferId");
qRegisterMetaTypeStreamOperators<MsgId>("MsgId");
qRegisterMetaType<Protocol::SessionState>("Protocol::SessionState");
+ qRegisterMetaType<PeerPtr>("PeerPtr");
+ qRegisterMetaTypeStreamOperators<PeerPtr>("PeerPtr");
// Versions of Qt prior to 4.7 didn't define QVariant as a meta type
if (!QMetaType::type("QVariant")) {
_buildInfo.baseVersion = QUASSEL_VERSION_STRING;
_buildInfo.generatedVersion = GIT_DESCRIBE;
- // This will be imprecise for incremental builds not touching this file, but we really don't want to always recompile
- _buildInfo.buildDate = QString("%1 %2").arg(__DATE__, __TIME__);
-
// Check if we got a commit hash
- if (!QString(GIT_HEAD).isEmpty())
+ if (!QString(GIT_HEAD).isEmpty()) {
_buildInfo.commitHash = GIT_HEAD;
+ QDateTime date;
+ date.setTime_t(GIT_COMMIT_DATE);
+ _buildInfo.commitDate = date.toString();
+ }
else if (!QString(DIST_HASH).contains("Format")) {
_buildInfo.commitHash = DIST_HASH;
- _buildInfo.commitDate = QString(DIST_DATE).toUInt();
+ _buildInfo.commitDate = QString(DIST_DATE);
}
// create a nice version string
_buildInfo.plainVersionString = QString("v%1 (dist-%2)")
.arg(_buildInfo.baseVersion)
.arg(_buildInfo.commitHash.left(7));
- _buildInfo.fancyVersionString = QString("v%1 (dist-<a href=\"http://git.quassel-irc.org/?p=quassel.git;a=commit;h=%3\">%2</a>)")
+ _buildInfo.fancyVersionString = QString("v%1 (dist-<a href=\"https://github.com/quassel/quassel/commit/%3\">%2</a>)")
.arg(_buildInfo.baseVersion)
.arg(_buildInfo.commitHash.left(7))
.arg(_buildInfo.commitHash);
_buildInfo.plainVersionString = QString("v%1 (%2git-%3%4)")
.arg(_buildInfo.baseVersion, distance, rx.cap(3), rx.cap(4));
if (!_buildInfo.commitHash.isEmpty()) {
- _buildInfo.fancyVersionString = QString("v%1 (%2git-<a href=\"http://git.quassel-irc.org/?p=quassel.git;a=commit;h=%5\">%3</a>%4)")
+ _buildInfo.fancyVersionString = QString("v%1 (%2git-<a href=\"https://github.com/quassel/quassel/commit/%5\">%3</a>%4)")
.arg(_buildInfo.baseVersion, distance, rx.cap(3), rx.cap(4), _buildInfo.commitHash);
}
}
else
QCoreApplication::quit();
break;
+#ifndef Q_OS_WIN
+// Windows does not support SIGHUP
+ case SIGHUP:
+ // Most applications use this as the 'configuration reload' command, e.g. nginx uses it for
+ // graceful reloading of processes.
+ if (_instance) {
+ // If the instance exists, reload the configuration
+ quInfo() << "Caught signal" << SIGHUP <<"- reloading configuration";
+ if (_instance->reloadConfig()) {
+ quInfo() << "Successfully reloaded configuration";
+ }
+ }
+ break;
+#endif
case SIGABRT:
case SIGSEGV:
#ifndef Q_OS_WIN