X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-kernel.c;h=81dfba7476211b5272757a8162aa599dd0831027;hp=92acbeec5eda9148dfbed97f17d9c80893e513f2;hb=d78bf250b0e31b42eb8b86ebe3ee775b247bfcf8;hpb=689bd78d108819b362e75af42536725c56b5e939 diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 92acbeec5..81dfba747 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);