]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Windows: only flush buffers on shutdown if running
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 27 Oct 2011 21:57:25 +0000 (17:57 -0400)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 15 Nov 2011 13:52:00 +0000 (05:52 -0800)
If a service shutdown message is received prior to the
service entering the running state, do not attempt to
buf_CleanAndReset() because the required data structures
and locks are not initialized.

Reviewed-on: http://gerrit.openafs.org/5733
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
(cherry picked from commit 9743f5729d1a55513e861bb1334599a8e597de6b)

Change-Id: I2bda1c4a538c83595f2d60ad4661c7e6865c5fc3
Reviewed-on: http://gerrit.openafs.org/6041
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
src/WINNT/afsd/afsd_service.c

index 016848c595963263e4f5a9e61942be298b8397d7..ab6cdef25bbff17e92c3f861e62fcf2eef8d1ec6 100644 (file)
@@ -244,6 +244,7 @@ afsd_ServiceControlHandlerEx(
     long code;
     DWORD dwRet = ERROR_CALL_NOT_IMPLEMENTED;
     OSVERSIONINFO osVersion;
+    DWORD dwCurrentState = ServiceStatus.dwCurrentState;
 
     /* Get the version of Windows */
     memset(&osVersion, 0x00, sizeof(osVersion));
@@ -267,7 +268,8 @@ afsd_ServiceControlHandlerEx(
         SetServiceStatus(StatusHandle, &ServiceStatus);
 
         /* Write all dirty buffers back to server */
-       if ( !lana_OnlyLoopback() )
+       if (dwCurrentState == SERVICE_RUNNING &&
+            !lana_OnlyLoopback() )
            buf_CleanAndReset();
 
         /* Force trace if requested */