aboutsummaryrefslogtreecommitdiffstats
path: root/erts/etc/win32
diff options
context:
space:
mode:
authorFredrik Gustafsson <[email protected]>2012-08-27 15:03:54 +0200
committerFredrik Gustafsson <[email protected]>2012-08-27 15:03:54 +0200
commite6b62480201b744bbac2d7b07618202c40e2912c (patch)
treedddd5d0e4e670bc120d709737eeb53e90acca5e8 /erts/etc/win32
parentc6fc61ffab426cc7b391eb903e7942bda809a230 (diff)
parent03985084e42e262bac1b7c48a97c31db97348f1d (diff)
downloadotp-e6b62480201b744bbac2d7b07618202c40e2912c.tar.gz
otp-e6b62480201b744bbac2d7b07618202c40e2912c.tar.bz2
otp-e6b62480201b744bbac2d7b07618202c40e2912c.zip
Merge branch 'jkl/erlsrv-graceful-shutdown/OTP-10228' into maint
* jkl/erlsrv-graceful-shutdown/OTP-10228: erlsrv: gracefully stop emulator on Windows shutdown
Diffstat (limited to 'erts/etc/win32')
-rw-r--r--erts/etc/win32/erlsrv/erlsrv_service.c3
-rw-r--r--erts/etc/win32/port_entry.c2
-rw-r--r--erts/etc/win32/start_erl.c3
3 files changed, 6 insertions, 2 deletions
diff --git a/erts/etc/win32/erlsrv/erlsrv_service.c b/erts/etc/win32/erlsrv/erlsrv_service.c
index 242e2905a9..8b734b0c05 100644
--- a/erts/etc/win32/erlsrv/erlsrv_service.c
+++ b/erts/etc/win32/erlsrv/erlsrv_service.c
@@ -104,11 +104,10 @@ static VOID WINAPI handler(DWORD control){
log_debug(buffer);
switch(control){
case SERVICE_CONTROL_STOP:
+ case SERVICE_CONTROL_SHUTDOWN:
set_stop_pending(30000,1);
SetEvent(eventStop);
return;
- case SERVICE_CONTROL_SHUTDOWN:
- return;
default:
reset_current();
break;
diff --git a/erts/etc/win32/port_entry.c b/erts/etc/win32/port_entry.c
index 49b5ad2f34..9c3e750cbc 100644
--- a/erts/etc/win32/port_entry.c
+++ b/erts/etc/win32/port_entry.c
@@ -45,6 +45,8 @@ extern void mainCRTStartup(void);
BOOL WINAPI erl_port_default_handler(DWORD ctrl){
if(ctrl == CTRL_LOGOFF_EVENT)
return TRUE;
+ if(ctrl == CTRL_SHUTDOWN_EVENT)
+ return TRUE;
return FALSE;
}
diff --git a/erts/etc/win32/start_erl.c b/erts/etc/win32/start_erl.c
index 28c8e55bd3..41b221d5bc 100644
--- a/erts/etc/win32/start_erl.c
+++ b/erts/etc/win32/start_erl.c
@@ -585,6 +585,9 @@ BOOL WINAPI LogoffHandlerRoutine( DWORD dwCtrlType )
if(dwCtrlType == CTRL_LOGOFF_EVENT) {
return TRUE;
}
+ if(dwCtrlType == CTRL_SHUTDOWN_EVENT) {
+ return TRUE;
+ }
return FALSE;
}