https://git.reactos.org/?p=reactos.git;a=commitdiff;h=e0c97c9ecacf5eae342ca…
commit e0c97c9ecacf5eae342ca412a5c8db38ea631596
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Sun Jul 21 18:56:02 2019 +0200
Commit: Eric Kohl <eric.kohl(a)reactos.org>
CommitDate: Sun Jul 21 18:56:59 2019 +0200
[SRVSVC][WKSSVC] Set the stop pending status before stopping the services and stop the
RPC listener on shutdown as well.
---
base/services/srvsvc/srvsvc.c | 4 ++++
base/services/wkssvc/wkssvc.c | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/base/services/srvsvc/srvsvc.c b/base/services/srvsvc/srvsvc.c
index a4e77f2c8f8..32d73ea89b4 100644
--- a/base/services/srvsvc/srvsvc.c
+++ b/base/services/srvsvc/srvsvc.c
@@ -79,6 +79,7 @@ ServiceControlHandler(DWORD dwControl,
{
case SERVICE_CONTROL_STOP:
TRACE(" SERVICE_CONTROL_STOP received\n");
+ UpdateServiceStatus(SERVICE_STOP_PENDING);
/* Stop listening to incoming RPC messages */
RpcMgmtStopServerListening(NULL);
UpdateServiceStatus(SERVICE_STOPPED);
@@ -102,6 +103,9 @@ ServiceControlHandler(DWORD dwControl,
case SERVICE_CONTROL_SHUTDOWN:
TRACE(" SERVICE_CONTROL_SHUTDOWN received\n");
+ UpdateServiceStatus(SERVICE_STOP_PENDING);
+ /* Stop listening to incoming RPC messages */
+ RpcMgmtStopServerListening(NULL);
UpdateServiceStatus(SERVICE_STOPPED);
return ERROR_SUCCESS;
diff --git a/base/services/wkssvc/wkssvc.c b/base/services/wkssvc/wkssvc.c
index eba9053e5e0..9feb7bb50e2 100644
--- a/base/services/wkssvc/wkssvc.c
+++ b/base/services/wkssvc/wkssvc.c
@@ -76,6 +76,7 @@ ServiceControlHandler(DWORD dwControl,
{
case SERVICE_CONTROL_STOP:
TRACE(" SERVICE_CONTROL_STOP received\n");
+ UpdateServiceStatus(SERVICE_STOP_PENDING);
/* Stop listening to incoming RPC messages */
RpcMgmtStopServerListening(NULL);
UpdateServiceStatus(SERVICE_STOPPED);
@@ -99,6 +100,9 @@ ServiceControlHandler(DWORD dwControl,
case SERVICE_CONTROL_SHUTDOWN:
TRACE(" SERVICE_CONTROL_SHUTDOWN received\n");
+ UpdateServiceStatus(SERVICE_STOP_PENDING);
+ /* Stop listening to incoming RPC messages */
+ RpcMgmtStopServerListening(NULL);
UpdateServiceStatus(SERVICE_STOPPED);
return ERROR_SUCCESS;