diff options
Diffstat (limited to 'service/service_manager.go')
-rw-r--r-- | service/service_manager.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/service/service_manager.go b/service/service_manager.go index b3752d31..33729795 100644 --- a/service/service_manager.go +++ b/service/service_manager.go @@ -143,9 +143,13 @@ func (service *managerService) Execute(args []string, r <-chan svc.ChangeRequest procs := make(map[uint32]*os.Process) procsLock := sync.Mutex{} var startProcess func(session uint32) + stoppingManager := false startProcess = func(session uint32) { for { + if stoppingManager { + return + } var userToken windows.Token err := wtfQueryUserToken(session, &userToken) if err != nil { @@ -305,6 +309,8 @@ loop: changes <- svc.Status{State: svc.StopPending} procsLock.Lock() + stoppingManager = true + IPCServerNotifyManagerStopping() for _, proc := range procs { proc.Kill() } |