From 8d1b002a2e389e79a2414491523de549783abf73 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 22 Aug 2012 05:02:33 +0200 Subject: service: introduce a proper service result if the start limit is hit --- TODO | 4 ---- src/core/service.c | 5 +++-- src/core/service.h | 1 + 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index ee90aee739..c70a53c132 100644 --- a/TODO +++ b/TODO @@ -55,8 +55,6 @@ Features: * enforce limits on fds openened by socket units -* proper service failure code for services which hit the restart limit - * explore multiple service instances per listening socket idea * testing tool for socket activation: some binary that listens on a socket and passes it on using the usual socket activation protocol to some server. @@ -237,8 +235,6 @@ Features: * Add pretty name for seats in logind -* nspawn wants dev_setup() for /dev/fd/ and friends? - * selinux: merge systemd selinux access controls (dwalsh) * ConditionSecurity= should learn about IMA diff --git a/src/core/service.c b/src/core/service.c index f540752b61..807b34267f 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -2508,7 +2508,7 @@ static int service_start(Unit *u) { /* Make sure we don't enter a busy loop of some kind. */ r = service_start_limit_test(s); if (r < 0) { - service_notify_sockets_dead(s, true); + service_enter_dead(s, SERVICE_FAILURE_START_LIMIT, false); return r; } @@ -3821,7 +3821,8 @@ static const char* const service_result_table[_SERVICE_RESULT_MAX] = { [SERVICE_FAILURE_EXIT_CODE] = "exit-code", [SERVICE_FAILURE_SIGNAL] = "signal", [SERVICE_FAILURE_CORE_DUMP] = "core-dump", - [SERVICE_FAILURE_WATCHDOG] = "watchdog" + [SERVICE_FAILURE_WATCHDOG] = "watchdog", + [SERVICE_FAILURE_START_LIMIT] = "start-limit" }; DEFINE_STRING_TABLE_LOOKUP(service_result, ServiceResult); diff --git a/src/core/service.h b/src/core/service.h index 2a4dc30d0b..d1e53bf727 100644 --- a/src/core/service.h +++ b/src/core/service.h @@ -98,6 +98,7 @@ typedef enum ServiceResult { SERVICE_FAILURE_SIGNAL, SERVICE_FAILURE_CORE_DUMP, SERVICE_FAILURE_WATCHDOG, + SERVICE_FAILURE_START_LIMIT, _SERVICE_RESULT_MAX, _SERVICE_RESULT_INVALID = -1 } ServiceResult; -- cgit v1.2.3-54-g00ecf