diff options
author | Antonin Kral <a.kral@bobek.cz> | 2011-04-07 07:35:46 +0200 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2011-04-07 07:35:46 +0200 |
commit | 8d913e98e8058c6322975a858f884a769735bb43 (patch) | |
tree | 52da0129272024f7132594b8227d81ec72f83af1 /util/ntservice.cpp | |
parent | 582fc32574a3b158c81e49cb00e6ae59205e66ba (diff) | |
download | mongodb-8d913e98e8058c6322975a858f884a769735bb43.tar.gz |
Imported Upstream version 1.8.1
Diffstat (limited to 'util/ntservice.cpp')
-rw-r--r-- | util/ntservice.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/util/ntservice.cpp b/util/ntservice.cpp index ccf2981..4b21b8c 100644 --- a/util/ntservice.cpp +++ b/util/ntservice.cpp @@ -312,9 +312,21 @@ namespace mongo { SERVICE_STATUS ssStatus; + DWORD dwControlsAccepted; + switch ( reportState ) { + case SERVICE_START_PENDING: + case SERVICE_STOP_PENDING: + case SERVICE_STOPPED: + dwControlsAccepted = 0; + break; + default: + dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN; + break; + } + ssStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; ssStatus.dwServiceSpecificExitCode = 0; - ssStatus.dwControlsAccepted = reportState == SERVICE_START_PENDING ? 0 : SERVICE_ACCEPT_STOP; + ssStatus.dwControlsAccepted = dwControlsAccepted; ssStatus.dwCurrentState = reportState; ssStatus.dwWin32ExitCode = NO_ERROR; ssStatus.dwWaitHint = waitHint; @@ -340,6 +352,7 @@ namespace mongo { switch ( ctrlCode ) { case SERVICE_CONTROL_STOP: case SERVICE_CONTROL_SHUTDOWN: + reportStatus( SERVICE_STOP_PENDING ); shutdownServer(); reportStatus( SERVICE_STOPPED ); return; |