diff --git a/Main.cs b/Main.cs index f2d894a..a6c3f7e 100644 --- a/Main.cs +++ b/Main.cs @@ -280,6 +280,9 @@ namespace winsw } } + /// + /// Called when we are told by Windows SCM to exit. + /// private void StopIt() { string stoparguments = descriptor.Stoparguments; @@ -432,7 +435,12 @@ namespace winsw } 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); } }