mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 00:51:24 +03:00
service: transition through SIGKILL states only when SIGKILL is enabled
If there's no remaining process to kill, skip the SIGKILL states if SIGKILL is disabled. Effectively this doesn't change much since if there's nothing to kill with SIGTERM or SIGABRT then there's also nothing to kill with SIGKILL. However, this avoids confusion with the state engine jumping through SIGKILL states for no reason...
This commit is contained in:
parent
2ab2ab7b19
commit
1db0db4b7f
@ -1409,11 +1409,11 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f
|
||||
}
|
||||
|
||||
service_set_state(s, state);
|
||||
} else if (state == SERVICE_STOP_SIGTERM || state == SERVICE_STOP_SIGABRT)
|
||||
} else if (IN_SET(state, SERVICE_STOP_SIGABRT, SERVICE_STOP_SIGTERM) && s->kill_context.send_sigkill)
|
||||
service_enter_signal(s, SERVICE_STOP_SIGKILL, SERVICE_SUCCESS);
|
||||
else if (state == SERVICE_STOP_SIGKILL)
|
||||
else if (IN_SET(state, SERVICE_STOP_SIGABRT, SERVICE_STOP_SIGTERM, SERVICE_STOP_SIGKILL))
|
||||
service_enter_stop_post(s, SERVICE_SUCCESS);
|
||||
else if (state == SERVICE_FINAL_SIGTERM)
|
||||
else if (state == SERVICE_FINAL_SIGTERM && s->kill_context.send_sigkill)
|
||||
service_enter_signal(s, SERVICE_FINAL_SIGKILL, SERVICE_SUCCESS);
|
||||
else
|
||||
service_enter_dead(s, SERVICE_SUCCESS, true);
|
||||
|
Loading…
Reference in New Issue
Block a user