Application: Perform hard-shutdown after 3 Ctrl+C's

This commit is contained in:
Lion Kortlepel 2021-09-10 13:24:15 +03:00 committed by Lion
parent ffac000cd2
commit b1664bb184
2 changed files with 10 additions and 4 deletions

View File

@ -22,10 +22,17 @@ void Application::RegisterShutdownHandler(const TShutdownHandler& Handler) {
}
}
static bool AlreadyShuttingDown = false;
void Application::GracefullyShutdown() {
static bool AlreadyShuttingDown = false;
static uint8_t ShutdownAttempts = 0;
if (AlreadyShuttingDown) {
info("already shutting down");
++ShutdownAttempts;
// hard shutdown at 2 additional tries
if (ShutdownAttempts == 2) {
info("hard shutdown forced by multiple shutdown requests");
exit(0);
}
info("already shutting down!");
return;
} else {
AlreadyShuttingDown = true;

View File

@ -3,6 +3,7 @@
#include "Common.h"
#include "CustomAssert.h"
#include "Http.h"
#include "SignalHandling.h"
#include "TConfig.h"
#include "THeartbeatThread.h"
#include "TLuaEngine.h"
@ -10,7 +11,6 @@
#include "TPPSMonitor.h"
#include "TResourceManager.h"
#include "TServer.h"
#include "SignalHandling.h"
#include <iostream>
#include <thread>
@ -63,4 +63,3 @@ int main(int argc, char** argv) try {
error(e.what());
Sentry.LogException(e, _file_basename, _line);
}