From: Zbigniew Jędrzejewski-Szmek Date: Thu, 29 Mar 2018 14:14:11 +0000 (+0200) Subject: sd-bus: allow description to be set for system/user busses (#8594) X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=bfe5e7bc50036c402ef816fb8fdf2d1857d228b8;p=elogind.git sd-bus: allow description to be set for system/user busses (#8594) 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 --- 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;