git://git.iain.cx/iain
/
nssm.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
220d2b0
)
Restart in response to PBT_APMRESUMEAUTOMATIC event.
author
Iain Patterson
<me@iain.cx>
Wed, 7 May 2014 07:33:35 +0000
(08:33 +0100)
committer
Iain Patterson
<me@iain.cx>
Wed, 10 Sep 2014 22:03:21 +0000
(23:03 +0100)
service.cpp
patch
|
blob
|
history
diff --git
a/service.cpp
b/service.cpp
index
61d4b84
..
3d3acb9
100644
(file)
--- a/
service.cpp
+++ b/
service.cpp
@@
-1362,7
+1362,7
@@
void WINAPI service_main(unsigned long argc, TCHAR **argv) {
/* Initialise status */
\r
ZeroMemory(&service->status, sizeof(service->status));
\r
service->status.dwServiceType = SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS;
\r
/* Initialise status */
\r
ZeroMemory(&service->status, sizeof(service->status));
\r
service->status.dwServiceType = SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS;
\r
- service->status.dwControlsAccepted = SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE;
\r
+ service->status.dwControlsAccepted = SERVICE_ACCEPT_
POWEREVENT | SERVICE_ACCEPT_
SHUTDOWN | SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE;
\r
service->status.dwWin32ExitCode = NO_ERROR;
\r
service->status.dwServiceSpecificExitCode = 0;
\r
service->status.dwCheckPoint = 0;
\r
service->status.dwWin32ExitCode = NO_ERROR;
\r
service->status.dwServiceSpecificExitCode = 0;
\r
service->status.dwCheckPoint = 0;
\r
@@
-1460,6
+1460,7
@@
TCHAR *service_control_text(unsigned long control) {
case SERVICE_CONTROL_CONTINUE: return _T("CONTINUE");
\r
case SERVICE_CONTROL_INTERROGATE: return _T("INTERROGATE");
\r
case NSSM_SERVICE_CONTROL_ROTATE: return _T("ROTATE");
\r
case SERVICE_CONTROL_CONTINUE: return _T("CONTINUE");
\r
case SERVICE_CONTROL_INTERROGATE: return _T("INTERROGATE");
\r
case NSSM_SERVICE_CONTROL_ROTATE: return _T("ROTATE");
\r
+ case SERVICE_CONTROL_POWEREVENT: return _T("POWEREVENT");
\r
default: return 0;
\r
}
\r
}
\r
default: return 0;
\r
}
\r
}
\r
@@
-1567,6
+1568,15
@@
unsigned long WINAPI service_control_handler(unsigned long control, unsigned lon
if (service->rotate_stdout_online == NSSM_ROTATE_ONLINE) service->rotate_stdout_online = NSSM_ROTATE_ONLINE_ASAP;
\r
if (service->rotate_stderr_online == NSSM_ROTATE_ONLINE) service->rotate_stderr_online = NSSM_ROTATE_ONLINE_ASAP;
\r
return NO_ERROR;
\r
if (service->rotate_stdout_online == NSSM_ROTATE_ONLINE) service->rotate_stdout_online = NSSM_ROTATE_ONLINE_ASAP;
\r
if (service->rotate_stderr_online == NSSM_ROTATE_ONLINE) service->rotate_stderr_online = NSSM_ROTATE_ONLINE_ASAP;
\r
return NO_ERROR;
\r
+
\r
+ case SERVICE_CONTROL_POWEREVENT:
\r
+ if (event != PBT_APMRESUMEAUTOMATIC) {
\r
+ log_service_control(service->name, control, false);
\r
+ return NO_ERROR;
\r
+ }
\r
+ log_service_control(service->name, control, true);
\r
+ end_service((void *) service, false);
\r
+ return NO_ERROR;
\r
}
\r
\r
/* Unknown control */
\r
}
\r
\r
/* Unknown control */
\r