]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-bus: don't include properties maked as "emit-invalidation" in InterfacesAdded... 14209/head
authorLennart Poettering <lennart@poettering.net>
Tue, 20 Aug 2019 13:35:53 +0000 (15:35 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 4 Dec 2019 12:46:23 +0000 (13:46 +0100)
Properties marked this way really shouldn't be sent around willy-nilly,
that's what the flag is about, hence exclude it from InterfacesAdded
signals (and in fact anything that is a signal).

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

index 26f93d21dab640af93f650e2219d4d93f4840902..6d140348ec4c3bbaaa0971fc77a29d4f1266da5e 100644 (file)
@@ -774,9 +774,18 @@ static int vtable_append_all_properties(
                 if (v->flags & SD_BUS_VTABLE_HIDDEN)
                         continue;
 
+                /* Let's not include properties marked as "explicit" in any message that contians a generic
+                 * dump of properties, but only in those generated as a response to an explicit request. */
                 if (v->flags & SD_BUS_VTABLE_PROPERTY_EXPLICIT)
                         continue;
 
+                /* Let's not include properties marked only for invalidation on change (i.e. in contrast to
+                 * those whose new values are included in PropertiesChanges message) in any signals. This is
+                 * useful to ensure they aren't included in InterfacesAdded messages. */
+                if (reply->header->type != SD_BUS_MESSAGE_METHOD_RETURN &&
+                    FLAGS_SET(v->flags, SD_BUS_VTABLE_PROPERTY_EMITS_INVALIDATION))
+                        continue;
+
                 r = vtable_append_one_property(bus, reply, path, c, v, userdata, error);
                 if (r < 0)
                         return r;