aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/zenserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenserver/zenserver.cpp')
-rw-r--r--src/zenserver/zenserver.cpp21
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()
{