From 9743f5729d1a55513e861bb1334599a8e597de6b 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. Change-Id: I29f20dbe91230f078334ca58e8791d2422cdecfd Reviewed-on: http://gerrit.openafs.org/5733 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 532f9567d9..7118a905c1 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 */