Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e080240b authored by Eric Biggers's avatar Eric Biggers Committed by Gerrit Code Review
Browse files

Merge "Revert "init: make reboot_on_failure not apply to manually stopped services""

parents 4e2362ea d14a178d
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -277,8 +277,6 @@ runs the service.
  CLD_EXITED or an status other than '0', reboot the system with the target specified in
  _target_. _target_ takes the same format as the parameter to sys.powerctl. This is particularly
  intended to be used with the `exec_start` builtin for any must-have checks during boot.
  A service being stopped by init (e.g. using the `stop` or `class_reset` commands) is not
  considered a failure for the purpose of this setting.

`restart_period <seconds>`
> If a non-oneshot service exits, it will be restarted at its start time plus
+3 −7
Original line number Diff line number Diff line
@@ -194,8 +194,6 @@ void Service::KillProcessGroup(int signal, bool report_oneshot) {
                  << ") process group...";
        int max_processes = 0;
        int r;

        flags_ |= SVC_STOPPING;
        if (signal == SIGTERM) {
            r = killProcessGroupOnce(proc_attr_.uid, pid_, signal, &max_processes);
        } else {
@@ -279,8 +277,7 @@ void Service::Reap(const siginfo_t& siginfo) {
        f(siginfo);
    }

    if ((siginfo.si_code != CLD_EXITED || siginfo.si_status != 0) && on_failure_reboot_target_ &&
        !(flags_ & SVC_STOPPING)) {
    if ((siginfo.si_code != CLD_EXITED || siginfo.si_status != 0) && on_failure_reboot_target_) {
        LOG(ERROR) << "Service with 'reboot_on_failure' option failed, shutting down system.";
        trigger_shutdown(*on_failure_reboot_target_);
    }
@@ -290,7 +287,7 @@ void Service::Reap(const siginfo_t& siginfo) {
    if (flags_ & SVC_TEMPORARY) return;

    pid_ = 0;
    flags_ &= ~(SVC_RUNNING | SVC_STOPPING);
    flags_ &= (~SVC_RUNNING);
    start_order_ = 0;

    // Oneshot processes go into the disabled state on exit,
@@ -414,8 +411,7 @@ Result<void> Service::Start() {
    bool disabled = (flags_ & (SVC_DISABLED | SVC_RESET));
    // Starting a service removes it from the disabled or reset state and
    // immediately takes it out of the restarting state if it was in there.
    flags_ &= (~(SVC_DISABLED | SVC_RESTARTING | SVC_RESET | SVC_RESTART | SVC_DISABLED_START |
                 SVC_STOPPING));
    flags_ &= (~(SVC_DISABLED|SVC_RESTARTING|SVC_RESET|SVC_RESTART|SVC_DISABLED_START));

    // Running processes require no additional work --- if they're in the
    // process of exiting, we've ensured that they will immediately restart
+0 −1
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@
                                     // should not be killed during shutdown
#define SVC_TEMPORARY 0x1000  // This service was started by 'exec' and should be removed from the
                              // service list once it is reaped.
#define SVC_STOPPING 0x2000  // service is being stopped by init

#define NR_SVC_SUPP_GIDS 12    // twelve supplementary groups