chiark / gitweb /
core/service: check if mainpid matches only if it is set
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 30 Dec 2013 16:21:56 +0000 (11:21 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 3 Jan 2014 00:45:47 +0000 (19:45 -0500)
https://bugzilla.redhat.com/show_bug.cgi?id=1047304

src/core/service.c

index eb9cd23..ea47a5e 100644 (file)
@@ -3343,6 +3343,9 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
 
         assert(u);
 
+        log_debug_unit(u->id, "%s: Got notification message from PID %lu (%s...)",
+                       u->id, (unsigned long) pid, tags && *tags ? tags[0] : "(empty)");
+
         if (s->notify_access == NOTIFY_NONE) {
                 log_warning_unit(u->id,
                                  "%s: Got notification message from PID %lu, but reception is disabled.",
@@ -3350,15 +3353,13 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
                 return;
         }
 
-        if (s->notify_access == NOTIFY_MAIN && pid != s->main_pid) {
+        if (s->notify_access == NOTIFY_MAIN && s->main_pid != 0 && pid != s->main_pid) {
                 log_warning_unit(u->id,
                                  "%s: Got notification message from PID %lu, but reception only permitted for PID %lu",
                                  u->id, (unsigned long) pid, (unsigned long) s->main_pid);
                 return;
         }
 
-        log_debug_unit(u->id, "%s: Got message", u->id);
-
         /* Interpret MAINPID= */
         if ((e = strv_find_prefix(tags, "MAINPID=")) &&
             (s->state == SERVICE_START ||