From bfe5e7bc50036c402ef816fb8fdf2d1857d228b8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 29 Mar 2018 16:14:11 +0200 Subject: [PATCH] sd-bus: allow description to be set for system/user busses (#8594) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit sd_bus_open/sd_bus_open_system/sd_bus_open_user are convenient, but don't allow the description to be set. After they return, the bus is is already started, and sd_bus_set_description() fails with -EBUSY. It would be possible to allow sd_bus_set_description() to update the description "live", but messages are already emitted from sd_bus_open functions, so it's better to allow the description to be set in sd_bus_open/sd_bus_open_system/sd_bus_open_user. Fixes message like: Bus n/a: changing state UNSET → OPENING --- src/libelogind/sd-bus/sd-bus.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/libelogind/sd-bus/sd-bus.c b/src/libelogind/sd-bus/sd-bus.c index 71a96ac00..c5013f98c 100644 --- a/src/libelogind/sd-bus/sd-bus.c +++ b/src/libelogind/sd-bus/sd-bus.c @@ -527,7 +527,8 @@ static int synthesize_connected_signal(sd_bus *bus) { /* Insert at the very front */ memmove(bus->rqueue + 1, bus->rqueue, sizeof(sd_bus_message*) * bus->rqueue_size); - bus->rqueue[0] = TAKE_PTR(m); + bus->rqueue[0] = m; + m = NULL; bus->rqueue_size++; return 0; @@ -2787,8 +2788,8 @@ static int process_running(sd_bus *bus, bool hint_priority, int64_t priority, sd if (r < 0) return r; - *ret = TAKE_PTR(m); - + *ret = m; + m = NULL; return 1; } @@ -2947,8 +2948,10 @@ static int process_closing(sd_bus *bus, sd_bus_message **ret) { bus->exit_triggered = true; (void) bus_exit_now(bus); - if (ret) - *ret = TAKE_PTR(m); + if (ret) { + *ret = m; + m = NULL; + } r = 1; -- 2.30.2