From 997eadb5534cbd3d1de3d93f6489a3b4d03405e1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 9 Jan 2015 21:25:23 +0100 Subject: [PATCH] sd-bus: even if we need a cookie when sending a message there's no need to needlessly send it if we don't actually need it --- src/libsystemd/sd-bus/sd-bus.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 15180d042..125b302c9 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -1704,8 +1704,8 @@ static int bus_send_internal(sd_bus *bus, sd_bus_message *_m, uint64_t *cookie, /* If this is a reply and no reply was requested, then let's * suppress this, if we can */ - if (m->dont_send && !cookie) - return 1; + if (m->dont_send) + goto finish; if ((bus->state == BUS_RUNNING || bus->state == BUS_HELLO) && bus->wqueue_size <= 0) { size_t idx = 0; @@ -1718,7 +1718,9 @@ static int bus_send_internal(sd_bus *bus, sd_bus_message *_m, uint64_t *cookie, } return r; - } else if (!bus->is_kernel && idx < BUS_MESSAGE_SIZE(m)) { + } + + if (!bus->is_kernel && idx < BUS_MESSAGE_SIZE(m)) { /* Wasn't fully written. So let's remember how * much was written. Note that the first entry * of the wqueue array is always allocated so @@ -1728,6 +1730,7 @@ static int bus_send_internal(sd_bus *bus, sd_bus_message *_m, uint64_t *cookie, bus->wqueue_size = 1; bus->windex = idx; } + } else { /* Just append it to the queue. */ @@ -1740,6 +1743,7 @@ static int bus_send_internal(sd_bus *bus, sd_bus_message *_m, uint64_t *cookie, bus->wqueue[bus->wqueue_size ++] = sd_bus_message_ref(m); } +finish: if (cookie) *cookie = BUS_MESSAGE_COOKIE(m); -- 2.30.2