]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-bus: don't list activators as proper peers
authorDavid Herrmann <dh.herrmann@gmail.com>
Mon, 24 Aug 2015 11:41:03 +0000 (13:41 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Mon, 24 Aug 2015 11:41:03 +0000 (13:41 +0200)
If a connection passed KDBUS_HELLO_ACTIVATOR, it cannot do I/O on the
bus. Hence, we should not treat it as proper peer. To actually query it,
you have to explicitly ask for activators.

This makes kdbus in-line with what dbus-daemon does.

src/libsystemd/sd-bus/bus-control.c

index 92b12f2ae83638924f982f3a6027ff64c64157ed..95c7d4ebe4bcf8dbd94d42d98830daf7904597cd 100644 (file)
@@ -257,7 +257,7 @@ static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) {
         KDBUS_FOREACH(name, name_list, cmd.list_size) {
                 struct kdbus_item *item;
 
-                if ((flags & KDBUS_LIST_UNIQUE) && name->id != previous_id) {
+                if ((flags & KDBUS_LIST_UNIQUE) && name->id != previous_id && !(name->flags & KDBUS_HELLO_ACTIVATOR)) {
                         char *n;
 
                         if (asprintf(&n, ":1.%llu", (unsigned long long) name->id) < 0) {