summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2016-05-14 20:52:28 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2016-05-14 21:28:06 +0200
commitec3cf46cec1e2f556d201fccad808dbdd2c84f66 (patch)
treea0471112f0cf76a19bbdee5504cadf7f6bbfc971 /src
parenta378a0d752e9ef77bd72a77155b83d75c9dc2a86 (diff)
downloadmanager-ec3cf46cec1e2f556d201fccad808dbdd2c84f66.tar.gz
manager-ec3cf46cec1e2f556d201fccad808dbdd2c84f66.zip
Quit IRC sanely on exit detach/update and put "Updating..." into quit
message with exit update
Diffstat (limited to 'src')
-rw-r--r--src/crsm.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index 9f65b59..6649416 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -333,7 +333,7 @@ void CRSM::scenarioFinished()
{
writeFiles();
if(processManager != nullptr) processManager->exit();
- if(connection != 0)
+ if(connection != nullptr)
{
connection->quit(Config.IRC.QuitMessage);
connect(connection, SIGNAL(disconnected()), QCoreApplication::instance(), SLOT(quit()));
@@ -2809,14 +2809,27 @@ CMD_FUNCTION_IMPL(exit)
CMD_FUNCTION_IMPL(exitDetach)
Config.Auto.ProcessManager.ReattachId = processManager->ID();
writeFiles(true);
- connection->quit(Config.IRC.QuitMessage);
- QCoreApplication::quit();
+ if(connection != nullptr)
+ {
+ QString quitMsg = Config.IRC.QuitMessage;
+ if(!args.isEmpty())
+ {
+ quitMsg = args;
+ }
+ connect(connection, SIGNAL(disconnected()), QCoreApplication::instance(), SLOT(quit()));
+ connection->quit(quitMsg);
+ QTimer::singleShot(1000, QCoreApplication::instance(), SLOT(quit()));
+ }
+ else
+ {
+ QCoreApplication::quit();
+ }
return Success;
}
CMD_FUNCTION_IMPL(exitUpdate)
writeToServer("Der Server Manager wird upgedatet. Befehle funktionieren temporär nicht.\n");
- return exitDetach(cmd, args, client, userType);
+ return exitDetach(cmd, "Updating...", client, userType);
}
CMD_FUNCTION_IMPL(exitAfter)