From 3a76266192da84f6f7b84725e7647c82f8407278 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 23 Apr 2010 22:55:14 +0200 Subject: [PATCH] service: never do automatic restarts for user requested stops --- service.c | 6 ++++++ service.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/service.c b/service.c index eb86886..84077a1 100644 --- a/service.c +++ b/service.c @@ -1318,6 +1318,7 @@ static void service_enter_dead(Service *s, bool success, bool allow_restart) { s->failure = true; if (allow_restart && + s->allow_restart && (s->restart == SERVICE_RESTART_ALWAYS || (s->restart == SERVICE_RESTART_ON_SUCCESS && !s->failure))) { @@ -1721,6 +1722,7 @@ static int service_start(Unit *u) { s->failure = false; s->main_pid_known = false; + s->allow_restart = true; service_enter_start_pre(s); return 0; @@ -1754,6 +1756,10 @@ static int service_stop(Unit *u) { assert(s->state == SERVICE_RUNNING || s->state == SERVICE_EXITED); + /* This is a user request, so don't do restarts on this + * shutdown. */ + s->allow_restart = false; + service_enter_stop(s, true); return 0; } diff --git a/service.h b/service.h index 6700229..40bd57e 100644 --- a/service.h +++ b/service.h @@ -110,6 +110,8 @@ struct Service { bool bus_name_good:1; + bool allow_restart:1; + bool got_socket_fd:1; bool sysv_has_lsb:1; -- 2.39.2