From d78bf250b0e31b42eb8b86ebe3ee775b247bfcf8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 12 Dec 2013 01:42:41 +0100 Subject: bus: properly generate NameOwnerChanged messages when we take from/give back to queue/starter --- src/libsystemd-bus/bus-kernel.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/libsystemd-bus/bus-kernel.c') diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 92acbeec5e..81dfba7476 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -514,17 +514,18 @@ static int translate_name_change(sd_bus *bus, struct kdbus_msg *k, struct kdbus_ assert(k); assert(d); - if (d->name_change.flags & (KDBUS_NAME_IN_QUEUE|KDBUS_NAME_STARTER)) - return 0; - - if (d->type == KDBUS_ITEM_NAME_ADD) + if (d->type == KDBUS_ITEM_NAME_ADD || (d->name_change.old_flags & (KDBUS_NAME_IN_QUEUE|KDBUS_NAME_STARTER))) old_owner[0] = 0; else sprintf(old_owner, ":1.%llu", (unsigned long long) d->name_change.old_id); - if (d->type == KDBUS_ITEM_NAME_REMOVE) + if (d->type == KDBUS_ITEM_NAME_REMOVE || (d->name_change.new_flags & (KDBUS_NAME_IN_QUEUE|KDBUS_NAME_STARTER))) { + + if (isempty(old_owner)) + return 0; + new_owner[0] = 0; - else + } else sprintf(new_owner, ":1.%llu", (unsigned long long) d->name_change.new_id); return push_name_owner_changed(bus, d->name_change.name, old_owner, new_owner); -- cgit v1.2.3-54-g00ecf