diff --git a/src/Root.cpp b/src/Root.cpp index 71d5875a6..2465cdfd4 100644 --- a/src/Root.cpp +++ b/src/Root.cpp @@ -92,7 +92,8 @@ void cRoot::InputThread(cRoot & a_Params) } // We have come here because the std::cin has received an EOF / a terminate signal has been sent, and the server is still running - if (!std::cin.good()) + // Ignore this when running as a service, cin was never opened in that case + if (!std::cin.good() && !m_RunAsService) { // Stop the server: a_Params.QueueExecuteConsoleCommand("stop"); @@ -232,15 +233,7 @@ void cRoot::Start(std::unique_ptr a_OverridesRepo) { m_StopEvent.Wait(); - if (m_TerminateEventRaised && m_RunAsService) - { - // Dont kill if running as a service - m_TerminateEventRaised = false; - } - else - { - break; - } + break; } // Stop the server: diff --git a/src/main.cpp b/src/main.cpp index 06f979097..1b77e2480 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -495,6 +495,9 @@ int main(int argc, char ** argv) } #endif + // Make sure m_RunAsService is set correctly before checking it's value + ParseArguments(argc, argv); + // Attempt to run as a service if (cRoot::m_RunAsService) {