]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
win32: fix service state reported during shutdown
authorMichał Kępień <michal@isc.org>
Fri, 19 Apr 2019 07:37:51 +0000 (09:37 +0200)
committerMichał Kępień <michal@isc.org>
Fri, 19 Apr 2019 07:37:51 +0000 (09:37 +0200)
When a Windows service receives a request to stop, it should not set its
state to SERVICE_STOPPED until it is completely shut down as doing that
allows the operating system to kill that service prematurely, which in
the case of named may e.g. prevent the PID file and/or the lock file
from being cleaned up.

Set service state to SERVICE_STOP_PENDING when named begins its shutdown
and only report the SERVICE_STOPPED state immediately before exiting.

bin/named/win32/ntservice.c

index dbb19c9beac0766f7caeb96766c56a52a2d5f56a..986993f4f1adb191ff42ec1063185916fa6d428f 100644 (file)
@@ -81,7 +81,7 @@ ServiceControl(DWORD dwCtrlCode) {
        case SERVICE_CONTROL_STOP:
                named_server_flushonshutdown(named_g_server, true);
                isc_app_shutdown();
-               UpdateSCM(SERVICE_STOPPED);
+               UpdateSCM(SERVICE_STOP_PENDING);
                break;
        default:
                break;