From d27d549d02f628a1c4b88bcf8d1f8d5878174b58 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 27 Oct 2011 17:57:25 -0400 Subject: [PATCH] Windows: only flush buffers on shutdown if running 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 Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman (cherry picked from commit 9743f5729d1a55513e861bb1334599a8e597de6b) Change-Id: I2bda1c4a538c83595f2d60ad4661c7e6865c5fc3 Reviewed-on: http://gerrit.openafs.org/6041 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsd/afsd_service.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/WINNT/afsd/afsd_service.c b/src/WINNT/afsd/afsd_service.c index 016848c59..ab6cdef25 100644 --- a/src/WINNT/afsd/afsd_service.c +++ b/src/WINNT/afsd/afsd_service.c @@ -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 */ -- 2.39.5