Zbigniew Jędrzejewski-Szmek db38be
From a158dbf156acc8899806fe07daa295464e82b52b Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek db38be
From: Brandon L Black <blblack@gmail.com>
Zbigniew Jędrzejewski-Szmek db38be
Date: Sat, 11 Oct 2014 23:36:06 +0000
Zbigniew Jędrzejewski-Szmek db38be
Subject: [PATCH] Set $NOTIFY_SOCKET for control procs if NotifyAccess=all
Zbigniew Jędrzejewski-Szmek db38be
Zbigniew Jędrzejewski-Szmek db38be
---
Zbigniew Jędrzejewski-Szmek db38be
 TODO               |  2 --
Zbigniew Jędrzejewski-Szmek db38be
 src/core/service.c | 11 +----------
Zbigniew Jędrzejewski-Szmek db38be
 2 files changed, 1 insertion(+), 12 deletions(-)
Zbigniew Jędrzejewski-Szmek db38be
Zbigniew Jędrzejewski-Szmek db38be
diff --git a/TODO b/TODO
Zbigniew Jędrzejewski-Szmek db38be
index 69ed60eaff..05a61a3953 100644
Zbigniew Jędrzejewski-Szmek db38be
--- a/TODO
Zbigniew Jędrzejewski-Szmek db38be
+++ b/TODO
Zbigniew Jędrzejewski-Szmek db38be
@@ -167,8 +167,6 @@ Features:
Zbigniew Jędrzejewski-Szmek db38be
 
Zbigniew Jędrzejewski-Szmek db38be
 * journalctl: add the ability to look for the most recent process of a binary. journalctl /usr/bin/X11 --pid=-1 or so...
Zbigniew Jędrzejewski-Szmek db38be
 
Zbigniew Jędrzejewski-Szmek db38be
-* set NOTIFY_SOCKET also for control processes
Zbigniew Jędrzejewski-Szmek db38be
-
Zbigniew Jędrzejewski-Szmek db38be
 * mount_cgroup_controllers(): symlinks need to get the label applied
Zbigniew Jędrzejewski-Szmek db38be
 
Zbigniew Jędrzejewski-Szmek db38be
 * For timer units: add some mechanisms so that timer units that trigger immediately on boot do not have the services
Zbigniew Jędrzejewski-Szmek db38be
diff --git a/src/core/service.c b/src/core/service.c
Zbigniew Jędrzejewski-Szmek db38be
index f551061366..76763441b0 100644
Zbigniew Jędrzejewski-Szmek db38be
--- a/src/core/service.c
Zbigniew Jędrzejewski-Szmek db38be
+++ b/src/core/service.c
Zbigniew Jędrzejewski-Szmek db38be
@@ -883,7 +883,6 @@ static int service_spawn(
Zbigniew Jędrzejewski-Szmek db38be
                 bool apply_permissions,
Zbigniew Jędrzejewski-Szmek db38be
                 bool apply_chroot,
Zbigniew Jędrzejewski-Szmek db38be
                 bool apply_tty_stdin,
Zbigniew Jędrzejewski-Szmek db38be
-                bool set_notify_socket,
Zbigniew Jędrzejewski-Szmek db38be
                 bool is_control,
Zbigniew Jędrzejewski-Szmek db38be
                 pid_t *_pid) {
Zbigniew Jędrzejewski-Szmek db38be
 
Zbigniew Jędrzejewski-Szmek db38be
@@ -948,7 +947,7 @@ static int service_spawn(
Zbigniew Jędrzejewski-Szmek db38be
                 goto fail;
Zbigniew Jędrzejewski-Szmek db38be
         }
Zbigniew Jędrzejewski-Szmek db38be
 
Zbigniew Jędrzejewski-Szmek db38be
-        if (set_notify_socket)
Zbigniew Jędrzejewski-Szmek db38be
+        if (is_control ? s->notify_access == NOTIFY_ALL : s->notify_access != NOTIFY_NONE)
Zbigniew Jędrzejewski-Szmek db38be
                 if (asprintf(our_env + n_env++, "NOTIFY_SOCKET=%s", UNIT(s)->manager->notify_socket) < 0) {
Zbigniew Jędrzejewski-Szmek db38be
                         r = -ENOMEM;
Zbigniew Jędrzejewski-Szmek db38be
                         goto fail;
Zbigniew Jędrzejewski-Szmek db38be
@@ -1153,7 +1152,6 @@ static void service_enter_stop_post(Service *s, ServiceResult f) {
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   true,
Zbigniew Jędrzejewski-Szmek db38be
-                                  false,
Zbigniew Jędrzejewski-Szmek db38be
                                   true,
Zbigniew Jędrzejewski-Szmek db38be
                                   &s->control_pid);
Zbigniew Jędrzejewski-Szmek db38be
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek db38be
@@ -1253,7 +1251,6 @@ static void service_enter_stop(Service *s, ServiceResult f) {
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   false,
Zbigniew Jędrzejewski-Szmek db38be
-                                  false,
Zbigniew Jędrzejewski-Szmek db38be
                                   true,
Zbigniew Jędrzejewski-Szmek db38be
                                   &s->control_pid);
Zbigniew Jędrzejewski-Szmek db38be
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek db38be
@@ -1316,7 +1313,6 @@ static void service_enter_start_post(Service *s) {
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   false,
Zbigniew Jędrzejewski-Szmek db38be
-                                  false,
Zbigniew Jędrzejewski-Szmek db38be
                                   true,
Zbigniew Jędrzejewski-Szmek db38be
                                   &s->control_pid);
Zbigniew Jędrzejewski-Szmek db38be
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek db38be
@@ -1383,7 +1379,6 @@ static void service_enter_start(Service *s) {
Zbigniew Jędrzejewski-Szmek db38be
                           true,
Zbigniew Jędrzejewski-Szmek db38be
                           true,
Zbigniew Jędrzejewski-Szmek db38be
                           true,
Zbigniew Jędrzejewski-Szmek db38be
-                          s->notify_access != NOTIFY_NONE,
Zbigniew Jędrzejewski-Szmek db38be
                           false,
Zbigniew Jędrzejewski-Szmek db38be
                           &pid;;
Zbigniew Jędrzejewski-Szmek db38be
         if (r < 0)
Zbigniew Jędrzejewski-Szmek db38be
@@ -1449,7 +1444,6 @@ static void service_enter_start_pre(Service *s) {
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   true,
Zbigniew Jędrzejewski-Szmek db38be
-                                  false,
Zbigniew Jędrzejewski-Szmek db38be
                                   true,
Zbigniew Jędrzejewski-Szmek db38be
                                   &s->control_pid);
Zbigniew Jędrzejewski-Szmek db38be
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek db38be
@@ -1530,7 +1524,6 @@ static void service_enter_reload(Service *s) {
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->permissions_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                                   false,
Zbigniew Jędrzejewski-Szmek db38be
-                                  false,
Zbigniew Jędrzejewski-Szmek db38be
                                   true,
Zbigniew Jędrzejewski-Szmek db38be
                                   &s->control_pid);
Zbigniew Jędrzejewski-Szmek db38be
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek db38be
@@ -1568,7 +1561,6 @@ static void service_run_next_control(Service *s) {
Zbigniew Jędrzejewski-Szmek db38be
                           !s->root_directory_start_only,
Zbigniew Jędrzejewski-Szmek db38be
                           s->control_command_id == SERVICE_EXEC_START_PRE ||
Zbigniew Jędrzejewski-Szmek db38be
                           s->control_command_id == SERVICE_EXEC_STOP_POST,
Zbigniew Jędrzejewski-Szmek db38be
-                          false,
Zbigniew Jędrzejewski-Szmek db38be
                           true,
Zbigniew Jędrzejewski-Szmek db38be
                           &s->control_pid);
Zbigniew Jędrzejewski-Szmek db38be
         if (r < 0)
Zbigniew Jędrzejewski-Szmek db38be
@@ -1611,7 +1603,6 @@ static void service_run_next_main(Service *s) {
Zbigniew Jędrzejewski-Szmek db38be
                           true,
Zbigniew Jędrzejewski-Szmek db38be
                           true,
Zbigniew Jędrzejewski-Szmek db38be
                           true,
Zbigniew Jędrzejewski-Szmek db38be
-                          s->notify_access != NOTIFY_NONE,
Zbigniew Jędrzejewski-Szmek db38be
                           false,
Zbigniew Jędrzejewski-Szmek db38be
                           &pid;;
Zbigniew Jędrzejewski-Szmek db38be
         if (r < 0)