chiark / gitweb /
bus: fix installing DRIVER matches on kdbus
authorDavid Herrmann <dh.herrmann@gmail.com>
Wed, 17 Jun 2015 17:15:58 +0000 (19:15 +0200)
committerSven Eden <yamakuzure@gmx.net>
Tue, 14 Mar 2017 09:03:48 +0000 (10:03 +0100)
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/libelogind/sd-bus/sd-bus.c

index 0c18296..c576350 100644 (file)
@@ -2942,10 +2942,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