Propagate abnormal termination to Windows SCM.

This will enable it to restart the service based on policies.
pull/37/merge
Kohsuke Kawaguchi 2014-01-08 21:34:12 -08:00
parent ae1bc43cff
commit 0ee22abe8c
1 changed files with 9 additions and 1 deletions

10
Main.cs
View File

@ -280,6 +280,9 @@ namespace winsw
} }
} }
/// <summary>
/// Called when we are told by Windows SCM to exit.
/// </summary>
private void StopIt() private void StopIt()
{ {
string stoparguments = descriptor.Stoparguments; string stoparguments = descriptor.Stoparguments;
@ -432,7 +435,12 @@ namespace winsw
} }
else else
{ {
LogEvent("Child process [" + msg + "] terminated with " + process.ExitCode, EventLogEntryType.Warning); LogEvent("Child process [" + msg + "] finished with " + process.ExitCode, EventLogEntryType.Warning);
// if we finished orderly, report that to SCM.
// by not reporting unclean shutdown, we let Windows SCM to decide if it wants to
// restart the service automatically
if (process.ExitCode == 0)
SignalShutdownComplete();
Environment.Exit(process.ExitCode); Environment.Exit(process.ExitCode);
} }
} }