dbus-util: properly parse timeout values
authorLennart Poettering <lennart@poettering.net>
Fri, 5 Jan 2018 11:17:35 +0000 (12:17 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 11 Jan 2018 14:12:16 +0000 (15:12 +0100)
This makes transient TimeoutStopSec= properties work. After all they are
64bit entitites, not 32bit ones.

src/core/dbus-util.c

index ed83a0e..75bbd07 100644 (file)
@@ -93,12 +93,12 @@ int bus_set_transient_usec_internal(
                 UnitWriteFlags flags,
                 sd_bus_error *error) {
 
-        usec_t v;
+        uint64_t v;
         int r;
 
         assert(p);
 
-        r = sd_bus_message_read(message, "u", &v);
+        r = sd_bus_message_read(message, "t", &v);
         if (r < 0)
                 return r;
 
@@ -106,7 +106,7 @@ int bus_set_transient_usec_internal(
                 char *n, ts[FORMAT_TIMESPAN_MAX];
 
                 if (fix_0)
-                        *p = v ?: USEC_INFINITY;
+                        *p = v != 0 ? v: USEC_INFINITY;
                 else
                         *p = v;