diff options
Diffstat (limited to 'src/rc/rc.c')
-rw-r--r-- | src/rc/rc.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/rc/rc.c b/src/rc/rc.c index 0a4fba11..0be79011 100644 --- a/src/rc/rc.c +++ b/src/rc/rc.c @@ -607,8 +607,10 @@ do_stop_services(const char *newlevel, bool parallel) else nstop = false; rc_stringlist_free(kwords); - if (nstop) + if (nstop) { + rc_service_mark(service->value, RC_SERVICE_FAILED); continue; + } /* If the service has crashed, skip futher checks and just stop it */ @@ -687,7 +689,9 @@ do_start_services(bool parallel) TAILQ_FOREACH(service, start_services, entries) { state = rc_service_state(service->value); - if (!(state & (RC_SERVICE_STOPPED | RC_SERVICE_FAILED))) { + if (state & RC_SERVICE_FAILED) + continue; + if (!(state & RC_SERVICE_STOPPED)) { if (crashed && rc_service_daemons_crashed(service->value)) rc_service_mark(service->value, |