Author: mturk
Date: Wed Nov 21 08:25:33 2012
New Revision: 1412011

URL: http://svn.apache.org/viewvc?rev=1412011&view=rev
Log:
DAEMON-267: Report service as stopped pnly when VM exits cleanly

Modified:
    
commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunsrv/prunsrv.c

Modified: 
commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunsrv/prunsrv.c
URL: 
http://svn.apache.org/viewvc/commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunsrv/prunsrv.c?rev=1412011&r1=1412010&r2=1412011&view=diff
==============================================================================
--- 
commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunsrv/prunsrv.c 
(original)
+++ 
commons/proper/daemon/branches/1.0.x/src/native/windows/apps/prunsrv/prunsrv.c 
Wed Nov 21 08:25:33 2012
@@ -836,7 +836,7 @@ int reportServiceStatusE(DWORD dwCurrent
    static DWORD dwCheckPoint = 1;
    BOOL fResult = TRUE;
 
-   apxLogWrite(APXLOG_MARK_DEBUG "reportServiceStatus: %d, %d, %d, %d", 
+   apxLogWrite(APXLOG_MARK_DEBUG "reportServiceStatus: %d, %d, %d, %d",
                dwCurrentState, dwWin32ExitCode, dwWaitHint, 
dwServiceSpecificExitCode);
 
    if (_service_mode && _service_status_handle) {
@@ -911,7 +911,15 @@ static int onExitStart(void)
     if (_service_mode) {
         apxLogWrite(APXLOG_MARK_DEBUG "Start exit hook called ...");
         apxLogWrite(APXLOG_MARK_DEBUG "VM exit code: %d", apxGetVmExitCode());
-        reportServiceStatusStopped(apxGetVmExitCode());
+        /* Reporting the service as stopped even with a non-zero exit code
+         * will not cause recovery actions to be initiated, so don't report at 
all.
+         * "A service is considered failed when it terminates without 
reporting a
+         * status of SERVICE_STOPPED to the service controller"
+         * http://msdn.microsoft.com/en-us/library/ms685939(VS.85).aspx
+         */
+        if (apxGetVmExitCode() == 0) {
+            reportServiceStatusStopped(0);
+        }
     }
     return 0;
 }


Reply via email to