Skip to content

Commit

Permalink
core/service: ensure we don't restart on SERVICE_SKIP_CONDITION
Browse files Browse the repository at this point in the history
service_shall_restart() always returns false if result
is SERVICE_SKIP_CONDITION, so drop unreachable code.
  • Loading branch information
YHNdnzj committed Apr 1, 2024
1 parent 76dddd6 commit 8959e17
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/core/service.c
Original file line number Diff line number Diff line change
Expand Up @@ -1992,7 +1992,7 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart)
} else if (s->result == SERVICE_SKIP_CONDITION) {
unit_log_skip(UNIT(s), service_result_to_string(s->result));
end_state = service_determine_dead_state(s);
restart_state = SERVICE_DEAD_BEFORE_AUTO_RESTART;
restart_state = _SERVICE_STATE_INVALID; /* Never restart if skipped due to condition failure */
} else {
unit_log_failure(UNIT(s), service_result_to_string(s->result));
end_state = SERVICE_FAILED;
Expand All @@ -2014,6 +2014,8 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart)
if (allow_restart) {
usec_t restart_usec_next;

assert(restart_state >= 0 && restart_state < _SERVICE_STATE_MAX);

/* We make two state changes here: one that maps to the high-level UNIT_INACTIVE/UNIT_FAILED
* state (i.e. a state indicating deactivation), and then one that that maps to the
* high-level UNIT_STARTING state (i.e. a state indicating activation). We do this so that
Expand Down Expand Up @@ -2513,7 +2515,6 @@ static void service_enter_condition(Service *s) {
service_exec_flags(s->control_command_id, /* cred_flag = */ 0),
s->timeout_start_usec,
&s->control_pid);

if (r < 0) {
log_unit_warning_errno(UNIT(s), r, "Failed to spawn 'exec-condition' task: %m");
goto fail;
Expand Down

0 comments on commit 8959e17

Please sign in to comment.