From: Lennart Poettering Date: Fri, 23 Apr 2010 20:55:14 +0000 (+0200) Subject: service: never do automatic restarts for user requested stops X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Fsystemd.git;a=commitdiff_plain;h=3a76266192da84f6f7b84725e7647c82f8407278 service: never do automatic restarts for user requested stops --- 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;