diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2018-03-29 16:14:11 +0200 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2018-08-24 16:47:08 +0200 |
commit | bfe5e7bc50036c402ef816fb8fdf2d1857d228b8 (patch) | |
tree | c0c3dc224a5d92047801479dda585e3d558d6a07 /src/libelogind | |
parent | c0b0f735d3c8bde4935ac11530a44d72e1d94a2f (diff) |
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
Diffstat (limited to 'src/libelogind')
-rw-r--r-- | src/libelogind/sd-bus/sd-bus.c | 13 |
1 files 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; |