]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/dbus-service: empty assignment to PIDFile= resets the value 11663/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 6 Feb 2019 16:52:41 +0000 (17:52 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 6 Feb 2019 16:58:52 +0000 (17:58 +0100)
Follow-up for a9353a5c5b512f107955e56a9812724f40b841d3.

src/core/dbus-service.c

index 10470a3f70ec4d8818c8ca390d0f673e67518f31..0904cc09c020e8ec536d2d9c30568d365234601f 100644 (file)
@@ -320,32 +320,34 @@ static int bus_service_set_transient_property(
                 if (r < 0)
                         return r;
 
-                n = path_make_absolute(v, u->manager->prefix[EXEC_DIRECTORY_RUNTIME]);
-                if (!n)
-                        return -ENOMEM;
+                if (!isempty(v)) {
+                        n = path_make_absolute(v, u->manager->prefix[EXEC_DIRECTORY_RUNTIME]);
+                        if (!n)
+                                return -ENOMEM;
 
-                path_simplify(n, true);
+                        path_simplify(n, true);
 
-                if (!path_is_normalized(n))
-                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "PIDFile= path '%s' is not valid", n);
+                        if (!path_is_normalized(n))
+                                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "PIDFile= path '%s' is not valid", n);
 
-                e = path_startswith(n, "/var/run/");
-                if (e) {
-                        char *z;
+                        e = path_startswith(n, "/var/run/");
+                        if (e) {
+                                char *z;
 
-                        z = strjoin("/run/", e);
-                        if (!z)
-                                return log_oom();
+                                z = strjoin("/run/", e);
+                                if (!z)
+                                        return log_oom();
 
-                        if (!UNIT_WRITE_FLAGS_NOOP(flags))
-                                log_unit_notice(u, "Transient unit's PIDFile= property references path below legacy directory /var/run, updating %s → %s; please update client accordingly.", n, z);
+                                if (!UNIT_WRITE_FLAGS_NOOP(flags))
+                                        log_unit_notice(u, "Transient unit's PIDFile= property references path below legacy directory /var/run, updating %s → %s; please update client accordingly.", n, z);
 
-                        free_and_replace(n, z);
+                                free_and_replace(n, z);
+                        }
                 }
 
                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
                         free_and_replace(s->pid_file, n);
-                        unit_write_settingf(u, flags, name, "%s=%s", name, s->pid_file);
+                        unit_write_settingf(u, flags, name, "%s=%s", name, strempty(s->pid_file));
                 }
 
                 return 1;