service: introduce a proper service result if the start limit is hit
authorLennart Poettering <lennart@poettering.net>
Wed, 22 Aug 2012 03:02:33 +0000 (05:02 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 22 Aug 2012 03:02:33 +0000 (05:02 +0200)
TODO
src/core/service.c
src/core/service.h

diff --git a/TODO b/TODO
index ee90aee..c70a53c 100644 (file)
--- 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
index f540752..807b342 100644 (file)
@@ -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);
index 2a4dc30..d1e53bf 100644 (file)
@@ -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;