On Tue, 25.04.17 09:54, David Herrmann (dh.herrm...@gmail.com) wrote: > >> This change makes sure all objects have the built-in interfaces > >> reported at all times. The GetManagedObjects() call didn't report them > >> so far. > > > > Quite the contrary? If you look at the output from dbus-monitor above, > > you'll see that it is sd-bus that already *does* report all interfaces > > while gdbus doesnt? > > No, it does not. sd-bus was inconsistent. See, there are 3 things > involved in the Object-Manager: > > Signal: InterfacesAdded > Signal: InterfacesRemoved > Call: GetManagedObjects > > The first two signals are used to add and remove objects (and their > respective interfaces) at runtime. The GetManagedObjects() call is > used to bootstrap, that is, to get the initial set of objects (and > their respective interfaces) when starting your application. > > So far, sd-bus reported the builtin interfaces correctly via the > signals, but did not return that information in the > GetManagedObjects() call. My patch fixed this omission. > The effect of this is that objects added/removed at runtime work fine, > but if an object was there already when your application starts, then > it will never be removed, since gdbus will see an interface-count > mismatch (as you observed above). > > Hence, the patch I provided fixes how sd-bus provides this > information. It does *not* change any policy. > > I think the 2 underlying problems you saw are bugs in both gdbus and > sd-bus. The one in sd-bus I tried to fix above, the one in gdbus is > only about counting interfaces and properly detecting negative > interface-counts. The gdbus bug is non-severe, though, since it > originates in a buggy remote client. So there is no hard reason to > change gdbus there.
Could you please send the sd-bus side fix as PR? Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/systemd-devel