[systemd-commits] src/core

Lennart Poettering lennart at kemper.freedesktop.org
Wed Jan 16 19:54:45 PST 2013


 src/core/service.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

New commits:
commit 464876c9c410b2f5bb997259510a13d0ee7d0af0
Author: Lennart Poettering <lennart at poettering.net>
Date:   Thu Jan 17 04:52:19 2013 +0100

    service: properly signal permanent failure of a service to its socket
    
    This makes sure that a service is not indefinitely restarted in a tight
    loop if it fails before it is able to process its socket.
    
    This corrects the breakage introduced with
    8d1b002a2e389e79a2414491523de549783abf73. Shame on me.

diff --git a/src/core/service.c b/src/core/service.c
index ebd0bae..9e46dba 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -1521,6 +1521,9 @@ static void service_set_state(Service *s, ServiceState state) {
                 s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID;
         }
 
+        if (state == SERVICE_FAILED)
+                service_notify_sockets_dead(s, s->result == SERVICE_FAILURE_START_LIMIT);
+
         if (state == SERVICE_DEAD ||
             state == SERVICE_STOP ||
             state == SERVICE_STOP_SIGTERM ||
@@ -1528,7 +1531,6 @@ static void service_set_state(Service *s, ServiceState state) {
             state == SERVICE_STOP_POST ||
             state == SERVICE_FINAL_SIGTERM ||
             state == SERVICE_FINAL_SIGKILL ||
-            state == SERVICE_FAILED ||
             state == SERVICE_AUTO_RESTART)
                 service_notify_sockets_dead(s, false);
 



More information about the systemd-commits mailing list