]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: make "Restart" service property accessible via the transient API
authorLennart Poettering <lennart@poettering.net>
Wed, 23 Nov 2016 23:44:57 +0000 (00:44 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 13 Dec 2016 23:54:13 +0000 (00:54 +0100)
Fixes: #4402
src/core/dbus-service.c
src/shared/bus-unit-util.c

index 61b83d2d6212241d8c3e210f2bbf1e76b9afdc80..85b67318ed112609f4dbf0b26ac498e5d7066248 100644 (file)
@@ -143,6 +143,29 @@ static int bus_service_set_transient_property(
 
                 return 1;
 
+        } else if (streq(name, "Restart")) {
+                ServiceRestart sr;
+                const char *v;
+
+                r = sd_bus_message_read(message, "s", &v);
+                if (r < 0)
+                        return r;
+
+                if (isempty(v))
+                        sr = SERVICE_RESTART_NO;
+                else {
+                        sr = service_restart_from_string(v);
+                        if (sr < 0)
+                                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid restart setting: %s", v);
+                }
+
+                if (mode != UNIT_CHECK) {
+                        s->restart = sr;
+                        unit_write_drop_in_private_format(UNIT(s), mode, name, "Restart=%s", service_restart_to_string(sr));
+                }
+
+                return 1;
+
         } else if (STR_IN_SET(name,
                               "StandardInputFileDescriptor",
                               "StandardOutputFileDescriptor",
index 735b8effc968061c2a30df0fbfb0c60806512e4e..b030b3b9d18e270189705d97f3811ece7c94b3b3 100644 (file)
@@ -266,7 +266,7 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
                               "StandardInput", "StandardOutput", "StandardError",
                               "Description", "Slice", "Type", "WorkingDirectory",
                               "RootDirectory", "SyslogIdentifier", "ProtectSystem",
-                              "ProtectHome", "SELinuxContext"))
+                              "ProtectHome", "SELinuxContext", "Restart"))
                 r = sd_bus_message_append(m, "v", "s", eq);
 
         else if (streq(field, "SyslogLevel")) {