diff --git a/init/service.cpp b/init/service.cpp index 45e3f062d..12acfc692 100644 --- a/init/service.cpp +++ b/init/service.cpp @@ -960,6 +960,13 @@ void Service::StopOrReset(int how) { } else { flags_ |= how; } + // Make sure it's in right status when a restart immediately follow a + // stop/reset or vice versa. + if (how == SVC_RESTART) { + flags_ &= (~(SVC_DISABLED | SVC_RESET)); + } else { + flags_ &= (~SVC_RESTART); + } if (pid_) { KillProcessGroup(SIGKILL);