diff options
Diffstat (limited to 'src/zenserver/zenserver.cpp')
| -rw-r--r-- | src/zenserver/zenserver.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/zenserver/zenserver.cpp b/src/zenserver/zenserver.cpp index e6e451952..86dbc9617 100644 --- a/src/zenserver/zenserver.cpp +++ b/src/zenserver/zenserver.cpp @@ -475,6 +475,8 @@ ZenServer::InitializeState(const ZenServerOptions& ServerOptions) EnqueueStateMarkerTimer(); } + + EnqueueStateExitFlagTimer(); } void @@ -805,6 +807,14 @@ ZenServer::EnqueueSigIntTimer() } void +ZenServer::EnqueueStateExitFlagTimer() +{ + m_SigIntTimer.expires_after(std::chrono::milliseconds(500)); + m_SigIntTimer.async_wait([this](const asio::error_code&) { CheckStateExitFlag(); }); + EnsureIoRunner(); +} + +void ZenServer::EnqueueStatsReportingTimer() { m_StatsReportingTimer.expires_after(std::chrono::milliseconds(500)); @@ -858,6 +868,17 @@ ZenServer::CheckSigInt() EnqueueSigIntTimer(); } +void +ZenServer::CheckStateExitFlag() +{ + if (m_ServerEntry && m_ServerEntry->IsShutdownRequested()) + { + RequestExit(0); + return; + } + EnqueueStateExitFlagTimer(); +} + bool ZenServer::UpdateProcessMonitor() { |