summaryrefslogtreecommitdiff
path: root/src/libelogind
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-03-29 16:14:11 +0200
committerSven Eden <yamakuzure@gmx.net>2018-08-24 16:47:08 +0200
commitbfe5e7bc50036c402ef816fb8fdf2d1857d228b8 (patch)
treec0c3dc224a5d92047801479dda585e3d558d6a07 /src/libelogind
parentc0b0f735d3c8bde4935ac11530a44d72e1d94a2f (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.c13
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;