mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-12-28 06:35:34 +07:00
service: fix auto-restart handling in service_start()
Do not bypass the SERVICE_DEAD/SERVICE_FAILED state by manually issuing a start job while an automatic restart is pending.
This commit is contained in:
parent
f0c7b229e1
commit
2e9d6c1251
@ -2436,7 +2436,16 @@ static int service_start(Unit *u) {
|
||||
s->state == SERVICE_START_POST)
|
||||
return 0;
|
||||
|
||||
assert(s->state == SERVICE_DEAD || s->state == SERVICE_FAILED || s->state == SERVICE_AUTO_RESTART);
|
||||
/* A service that will be restarted must be stopped first to
|
||||
* trigger BindTo and/or OnFailure dependencies. If a user
|
||||
* does not want to wait for the holdoff time to elapse, the
|
||||
* service should be manually restarted, not started. */
|
||||
if (s->state == SERVICE_AUTO_RESTART) {
|
||||
log_warning("%s automatic restart is pending, must be stopped before issuing start request.", UNIT(s)->id);
|
||||
return -ECANCELED;
|
||||
}
|
||||
|
||||
assert(s->state == SERVICE_DEAD || s->state == SERVICE_FAILED);
|
||||
|
||||
/* Make sure we don't enter a busy loop of some kind. */
|
||||
r = service_start_limit_test(s);
|
||||
|
Loading…
Reference in New Issue
Block a user