Zbigniew Jędrzejewski-Szmek 62fe94
From 21b2ce39d4038cd6176394836fdcfb7fba63f424 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 62fe94
From: Lennart Poettering <lennart@poettering.net>
Zbigniew Jędrzejewski-Szmek 62fe94
Date: Thu, 21 Aug 2014 18:01:22 +0200
Zbigniew Jędrzejewski-Szmek 62fe94
Subject: [PATCH] service: use the right timeout for stop processes we fork
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
---
Zbigniew Jędrzejewski-Szmek 62fe94
 src/core/service.c | 23 +++++++++++------------
Zbigniew Jędrzejewski-Szmek 62fe94
 1 file changed, 11 insertions(+), 12 deletions(-)
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/core/service.c b/src/core/service.c
Zbigniew Jędrzejewski-Szmek 62fe94
index 3221938793..7d6ea73e05 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/core/service.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/core/service.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -862,7 +862,7 @@ fail:
Zbigniew Jędrzejewski-Szmek 62fe94
 static int service_spawn(
Zbigniew Jędrzejewski-Szmek 62fe94
                 Service *s,
Zbigniew Jędrzejewski-Szmek 62fe94
                 ExecCommand *c,
Zbigniew Jędrzejewski-Szmek 62fe94
-                bool timeout,
Zbigniew Jędrzejewski-Szmek 62fe94
+                usec_t timeout,
Zbigniew Jędrzejewski-Szmek 62fe94
                 bool pass_fds,
Zbigniew Jędrzejewski-Szmek 62fe94
                 bool apply_permissions,
Zbigniew Jędrzejewski-Szmek 62fe94
                 bool apply_chroot,
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -907,8 +907,8 @@ static int service_spawn(
Zbigniew Jędrzejewski-Szmek 62fe94
                 }
Zbigniew Jędrzejewski-Szmek 62fe94
         }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-        if (timeout && s->timeout_start_usec > 0) {
Zbigniew Jędrzejewski-Szmek 62fe94
-                r = service_arm_timer(s, s->timeout_start_usec);
Zbigniew Jędrzejewski-Szmek 62fe94
+        if (timeout > 0) {
Zbigniew Jędrzejewski-Szmek 62fe94
+                r = service_arm_timer(s, timeout);
Zbigniew Jędrzejewski-Szmek 62fe94
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
                         goto fail;
Zbigniew Jędrzejewski-Szmek 62fe94
         } else
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1108,7 +1108,7 @@ static void service_enter_stop_post(Service *s, ServiceResult f) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 r = service_spawn(s,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   s->control_command,
Zbigniew Jędrzejewski-Szmek 62fe94
-                                  true,
Zbigniew Jędrzejewski-Szmek 62fe94
+                                  s->timeout_stop_usec,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   false,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1207,7 +1207,7 @@ static void service_enter_stop(Service *s, ServiceResult f) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 r = service_spawn(s,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   s->control_command,
Zbigniew Jędrzejewski-Szmek 62fe94
-                                  true,
Zbigniew Jędrzejewski-Szmek 62fe94
+                                  s->timeout_stop_usec,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   false,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1270,7 +1270,7 @@ static void service_enter_start_post(Service *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 r = service_spawn(s,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   s->control_command,
Zbigniew Jędrzejewski-Szmek 62fe94
-                                  true,
Zbigniew Jędrzejewski-Szmek 62fe94
+                                  s->timeout_start_usec,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   false,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1334,8 +1334,7 @@ static void service_enter_start(Service *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
         r = service_spawn(s,
Zbigniew Jędrzejewski-Szmek 62fe94
                           c,
Zbigniew Jędrzejewski-Szmek 62fe94
-                          s->type == SERVICE_FORKING || s->type == SERVICE_DBUS ||
Zbigniew Jędrzejewski-Szmek 62fe94
-                            s->type == SERVICE_NOTIFY || s->type == SERVICE_ONESHOT,
Zbigniew Jędrzejewski-Szmek 62fe94
+                          IN_SET(s->type, SERVICE_FORKING, SERVICE_DBUS, SERVICE_NOTIFY, SERVICE_ONESHOT) ? s->timeout_start_usec : 0,
Zbigniew Jędrzejewski-Szmek 62fe94
                           true,
Zbigniew Jędrzejewski-Szmek 62fe94
                           true,
Zbigniew Jędrzejewski-Szmek 62fe94
                           true,
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1401,7 +1400,7 @@ static void service_enter_start_pre(Service *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 r = service_spawn(s,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   s->control_command,
Zbigniew Jędrzejewski-Szmek 62fe94
-                                  true,
Zbigniew Jędrzejewski-Szmek 62fe94
+                                  s->timeout_start_usec,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   false,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1482,7 +1481,7 @@ static void service_enter_reload(Service *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 r = service_spawn(s,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   s->control_command,
Zbigniew Jędrzejewski-Szmek 62fe94
-                                  true,
Zbigniew Jędrzejewski-Szmek 62fe94
+                                  s->timeout_start_usec,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   false,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1519,7 +1518,7 @@ static void service_run_next_control(Service *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
         r = service_spawn(s,
Zbigniew Jędrzejewski-Szmek 62fe94
                           s->control_command,
Zbigniew Jędrzejewski-Szmek 62fe94
-                          true,
Zbigniew Jędrzejewski-Szmek 62fe94
+                          IN_SET(s->state, SERVICE_START_PRE, SERVICE_START, SERVICE_START_POST, SERVICE_RUNNING, SERVICE_RELOAD) ? s->timeout_start_usec : s->timeout_stop_usec,
Zbigniew Jędrzejewski-Szmek 62fe94
                           false,
Zbigniew Jędrzejewski-Szmek 62fe94
                           !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
                           !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1563,7 +1562,7 @@ static void service_run_next_main(Service *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
         r = service_spawn(s,
Zbigniew Jędrzejewski-Szmek 62fe94
                           s->main_command,
Zbigniew Jędrzejewski-Szmek 62fe94
-                          true,
Zbigniew Jędrzejewski-Szmek 62fe94
+                          s->timeout_start_usec,
Zbigniew Jędrzejewski-Szmek 62fe94
                           true,
Zbigniew Jędrzejewski-Szmek 62fe94
                           true,
Zbigniew Jędrzejewski-Szmek 62fe94
                           true,