]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bus: fix installing DRIVER matches on kdbus
authorDavid Herrmann <dh.herrmann@gmail.com>
Wed, 17 Jun 2015 17:15:58 +0000 (19:15 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Wed, 17 Jun 2015 17:18:37 +0000 (19:18 +0200)
In kdbus we still have to support org.freedesktop.DBus matches even though
there is no real bus driver. The reason is that bus-control.c turns
NameOwnerChanged matches into proper kdbus matches. If we drop DRIVER
matches early, we will never match on name-changes for kdbus.

Two ways to fix this:

 1) Install DRIVER matches on kdbus (which is the simple way our and which
    is what this patch does).

 2) Properly fix the scope-detection to let NameOwnerChanged matches
    through (or better: block anything with Member!=NameOwnerChanged).

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

index b559ee9eb8f91db728d1bfbb18395f4b2dc8ad03..5dd64687074a1fc8878a50feb4ac95cc4171caab 100644 (file)
@@ -2945,10 +2945,8 @@ _public_ int sd_bus_add_match(
 
                 /* Do not install server-side matches for matches
                  * against the local service, interface or bus
-                 * path. Also, when on kdbus don't install driver
-                 * matches server side. */
-                if (scope == BUS_MATCH_GENERIC ||
-                    (!bus->is_kernel && scope == BUS_MATCH_DRIVER)) {
+                 * path. */
+                if (scope != BUS_MATCH_LOCAL) {
 
                         if (!bus->is_kernel) {
                                 /* When this is not a kernel transport, we