diff options
Diffstat (limited to 'configd/src/apps/sentinel/config-handler.cpp')
-rw-r--r-- | configd/src/apps/sentinel/config-handler.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/configd/src/apps/sentinel/config-handler.cpp b/configd/src/apps/sentinel/config-handler.cpp index 486c46e7442..d9f4d1f8bd7 100644 --- a/configd/src/apps/sentinel/config-handler.cpp +++ b/configd/src/apps/sentinel/config-handler.cpp @@ -402,6 +402,22 @@ ConfigHandler::handleCmd(const Cmd& cmd) cmd.retValue(retbuf); } break; + case Cmd::RESTART: + { + Service *service = serviceByName(cmd.serviceName()); + if (service == nullptr) { + cmd.retError("Cannot find named service"); + return; + } + service->setAutomatic(true); + service->resetRestartPenalty(); + if (service->isRunning()) { + service->terminate(true, false); + } else { + service->start(); + } + } + break; case Cmd::START: { Service *service = serviceByName(cmd.serviceName()); @@ -410,6 +426,7 @@ ConfigHandler::handleCmd(const Cmd& cmd) return; } service->setAutomatic(true); + service->resetRestartPenalty(); if (! service->isRunning()) { service->start(); } |