|
@@ -241,7 +241,8 @@ int kill_console(nssm_service_t *service, kill_t *k) {
|
|
|
|
|
|
/* Ignore the event ourselves. */
|
|
|
ret = 0;
|
|
|
- if (! SetConsoleCtrlHandler(0, TRUE)) {
|
|
|
+ bool ignored = SetConsoleCtrlHandler(0, TRUE);
|
|
|
+ if (! ignored) {
|
|
|
log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_SETCONSOLECTRLHANDLER_FAILED, k->name, error_string(GetLastError()), 0);
|
|
|
ret = 4;
|
|
|
}
|
|
@@ -262,6 +263,11 @@ int kill_console(nssm_service_t *service, kill_t *k) {
|
|
|
/* Wait for process to exit. */
|
|
|
if (await_single_handle(k->status_handle, k->status, k->process_handle, k->name, _T(__FUNCTION__), k->kill_console_delay)) ret = 6;
|
|
|
|
|
|
+ /* Remove our handler. */
|
|
|
+ if (ignored && ! SetConsoleCtrlHandler(0, FALSE)) {
|
|
|
+ log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_SETCONSOLECTRLHANDLER_FAILED, k->name, error_string(GetLastError()), 0);
|
|
|
+ }
|
|
|
+
|
|
|
return ret;
|
|
|
}
|
|
|
|