mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-08-10 13:20:33 +02:00
all: make procd "ctrld stop" blocks until process exited
Since procd does not block when init scripts execute stop operation, it causes ctrld command callers (the installer, users ...) thought that ctrld process was exited, while it does not. See: https://forum.openwrt.org/t/procd-shutdown-issues-questions/33759
This commit is contained in:
@@ -449,6 +449,23 @@ func initCLI() {
|
||||
if doTasks([]task{{s.Stop, true}}) {
|
||||
p.router.Cleanup()
|
||||
p.resetDNS()
|
||||
if router.WaitProcessExited() {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
|
||||
defer cancel()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
mainLog.Load().Error().Msg("timeout while waiting for service to stop")
|
||||
return
|
||||
default:
|
||||
}
|
||||
time.Sleep(time.Second)
|
||||
if status, _ := s.Status(); status == service.StatusStopped {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
mainLog.Load().Notice().Msg("Service stopped")
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user