diff options
author | Shauren <shauren.trinity@gmail.com> | 2014-07-23 19:04:07 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2014-07-23 19:04:07 +0200 |
commit | 42eeec12bfdf548b15a2f85d586ef037eab88a00 (patch) | |
tree | 45e1d6253fe54c661e229edc404b605c45ea19b9 | |
parent | a7476a7898e435a78201d53605b0cfedb4573a78 (diff) |
Core/Mains: Handle SIGBREAK to achieve clean shutdown when users click X button on windows
-rw-r--r-- | src/server/authserver/Main.cpp | 15 | ||||
-rw-r--r-- | src/server/worldserver/Main.cpp | 15 |
2 files changed, 10 insertions, 20 deletions
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index 8b9779d2b07..7c2ed4951c5 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -120,6 +120,9 @@ int main(int argc, char** argv) // Set signal handlers boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM); +#if PLATFORM == PLATFORM_WINDOWS + signals.add(SIGBREAK); +#endif signals.async_wait(SignalHandler); // Set process priority according to configuration settings @@ -186,18 +189,10 @@ void StopDB() MySQL::Library_End(); } -void SignalHandler(const boost::system::error_code& error, int signalNumber) +void SignalHandler(const boost::system::error_code& error, int /*signalNumber*/) { if (!error) - { - switch (signalNumber) - { - case SIGINT: - case SIGTERM: - _ioService.stop(); - break; - } - } + _ioService.stop(); } void KeepDatabaseAliveHandler(const boost::system::error_code& error) diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index 0c051eae37a..87eb3bae074 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -158,6 +158,9 @@ extern int main(int argc, char** argv) // Set signal handlers (this must be done before starting io_service threads, because otherwise they would unblock and exit) boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM); +#if PLATFORM == PLATFORM_WINDOWS + signals.add(SIGBREAK); +#endif signals.async_wait(SignalHandler); // Start the Boost based thread pool @@ -367,18 +370,10 @@ void WorldUpdateLoop() } } -void SignalHandler(const boost::system::error_code& error, int signalNumber) +void SignalHandler(const boost::system::error_code& error, int /*signalNumber*/) { if (!error) - { - switch (signalNumber) - { - case SIGINT: - case SIGTERM: - World::StopNow(SHUTDOWN_EXIT_CODE); - break; - } - } + World::StopNow(SHUTDOWN_EXIT_CODE); } void FreezeDetectorHandler(const boost::system::error_code& error) |