summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-08-22 05:02:33 +0200
committerLennart Poettering <lennart@poettering.net>2012-08-22 05:02:33 +0200
commit8d1b002a2e389e79a2414491523de549783abf73 (patch)
treeb428ecea68a996bddf079336d1f669562f5bcd59
parent99add6fd0b8f4307ed79256e25f38da318e795c4 (diff)
service: introduce a proper service result if the start limit is hit
-rw-r--r--TODO4
-rw-r--r--src/core/service.c5
-rw-r--r--src/core/service.h1
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;