diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-01-07 20:36:23 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-01-07 20:36:23 +0100 |
commit | 52cd587789b9452e6e7d5f2f9b2ea652f9ad036e (patch) | |
tree | 7aaa2d5ce2c844b82e2e04e572bb699ee97ba07a /src/libsystemd/sd-bus/sd-bus.c | |
parent | d29ae2914e1146f45ff4104faafef5331837bed7 (diff) |
sd-bus: when we synthesize messages, initialize timestamps ourselves
Diffstat (limited to 'src/libsystemd/sd-bus/sd-bus.c')
-rw-r--r-- | src/libsystemd/sd-bus/sd-bus.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 4b1c60edac..15180d0423 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -1528,6 +1528,16 @@ int bus_seal_synthetic_message(sd_bus *b, sd_bus_message *m) { assert(b); assert(m); + /* Fake some timestamps, if they were requested, and not + * already initialized */ + if (b->attach_flags & KDBUS_ATTACH_TIMESTAMP) { + if (m->realtime <= 0) + m->realtime = now(CLOCK_REALTIME); + + if (m->monotonic <= 0) + m->monotonic = now(CLOCK_MONOTONIC); + } + /* The bus specification says the serial number cannot be 0, * hence let's fill something in for synthetic messages. Since * synthetic messages might have a fake sender and we don't @@ -1535,7 +1545,6 @@ int bus_seal_synthetic_message(sd_bus *b, sd_bus_message *m) { * pick a fixed, artificial one. We use (uint32_t) -1 rather * than (uint64_t) -1 since dbus1 only had 32bit identifiers, * even though kdbus can do 64bit. */ - return bus_message_seal(m, 0xFFFFFFFFULL, 0); } @@ -2237,6 +2246,11 @@ static int process_reply(sd_bus *bus, sd_bus_message *m) { if (r < 0) return r; + /* Copy over original timestamp */ + synthetic_reply->realtime = m->realtime; + synthetic_reply->monotonic = m->monotonic; + synthetic_reply->seqnum = m->seqnum; + r = bus_seal_synthetic_message(bus, synthetic_reply); if (r < 0) return r; |