chiark / gitweb /
service: schedule JOB_RESTART from SERVICE_AUTO_RESTART state
authorDavid Ward <david.ward@ll.mit.edu>
Tue, 3 Apr 2012 03:45:35 +0000 (23:45 -0400)
committerLennart Poettering <lennart@poettering.net>
Tue, 3 Apr 2012 12:27:13 +0000 (14:27 +0200)
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=45511
src/service.c

index 8b5c0b07c4d29efe70b639936389d7b77a2dbdbb..bf2e0a9d98f99979b8881f6209a20f3727635b72 100644 (file)
@@ -2208,9 +2208,12 @@ static void service_enter_restart(Service *s) {
                         goto fail;
         }
 
-        service_enter_dead(s, SERVICE_SUCCESS, false);
-
-        if ((r = manager_add_job(UNIT(s)->manager, JOB_START, UNIT(s), JOB_FAIL, false, &error, NULL)) < 0)
+        /* Any units that are bound to this service must also be
+         * restarted. We use JOB_RESTART (instead of the more obvious
+         * JOB_START) here so that those dependency jobs will be added
+         * as well. */
+        r = manager_add_job(UNIT(s)->manager, JOB_RESTART, UNIT(s), JOB_FAIL, false, &error, NULL);
+        if (r < 0)
                 goto fail;
 
         log_debug("%s scheduled restart job.", UNIT(s)->id);