Adding a match rule such as the following: string "type='signal',sender=':1.94',path_namespace='/'" results in zero signals being forwarded to that D-Bus client. It appears that the special case of path_namespace='/' matches nothing, instead of everything (because conceptually it should be a no-op match key). This kind of match rule can occur with GDBusObjectManagerClient if the ObjectManager is at path ‘/’.
Downstream workaround in GIO: https://bugzilla.gnome.org/show_bug.cgi?id=710726
App-level workaround: compose and add your own match rule without the path_namespace. Nobody spotted this before because an ObjectManager at '/' is usually an undesirable thing to do: you'll get every signal emitted by the entire service.
Created attachment 88037 [details] [review] [1.6, master] path_namespace='/' should match everything
Comment on attachment 88037 [details] [review] [1.6, master] path_namespace='/' should match everything Review of attachment 88037 [details] [review]: ----------------------------------------------------------------- I’m not a D-Bus reviewer, but this looks good to me.
Comment on attachment 88037 [details] [review] [1.6, master] path_namespace='/' should match everything Review of attachment 88037 [details] [review]: ----------------------------------------------------------------- ::: bus/signals.c @@ +1842,2 @@ > */ > + if (len > 1 && path[len] != '\0' && path[len] != '/') I'd have put the len > 1 case before the prefix match but this will obviously work and the docs are clear enough.
Thanks, fixed in git for 1.6.18 and 1.7.8.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.