From: Jeffrey Altman Date: Thu, 27 Oct 2011 21:57:25 +0000 (-0400) Subject: Windows: only flush buffers on shutdown if running X-Git-Tag: upstream/1.8.0_pre1^2~3117 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=9743f5729d1a55513e861bb1334599a8e597de6b;p=packages%2Fo%2Fopenafs.git 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. Change-Id: I29f20dbe91230f078334ca58e8791d2422cdecfd Reviewed-on: http://gerrit.openafs.org/5733 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/afsd_service.c b/src/WINNT/afsd/afsd_service.c index 532f9567d..7118a905c 100644 --- a/src/WINNT/afsd/afsd_service.c +++ b/src/WINNT/afsd/afsd_service.c @@ -249,6 +249,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)); @@ -272,7 +273,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 */