diff --git a/core/internal/server/bluez/manager.go b/core/internal/server/bluez/manager.go index a584f3614..33d9a3b44 100644 --- a/core/internal/server/bluez/manager.go +++ b/core/internal/server/bluez/manager.go @@ -18,10 +18,12 @@ const ( propertiesIface = "org.freedesktop.DBus.Properties" ) +// Sender-scoped: the system bus is shared process-wide, so unscoped rules wake +// every other subsystem's signal channel too. var bluezMatchRules = [][]dbus.MatchOption{ - {dbus.WithMatchInterface(propertiesIface), dbus.WithMatchMember("PropertiesChanged")}, - {dbus.WithMatchInterface(objectMgrIface), dbus.WithMatchMember("InterfacesAdded")}, - {dbus.WithMatchInterface(objectMgrIface), dbus.WithMatchMember("InterfacesRemoved")}, + {dbus.WithMatchSender(bluezService), dbus.WithMatchInterface(propertiesIface), dbus.WithMatchMember("PropertiesChanged")}, + {dbus.WithMatchSender(bluezService), dbus.WithMatchInterface(objectMgrIface), dbus.WithMatchMember("InterfacesAdded")}, + {dbus.WithMatchSender(bluezService), dbus.WithMatchInterface(objectMgrIface), dbus.WithMatchMember("InterfacesRemoved")}, } func NewManager() (*Manager, error) { diff --git a/core/internal/server/bluez/watcher.go b/core/internal/server/bluez/watcher.go index 71c0ff5db..3187cbaba 100644 --- a/core/internal/server/bluez/watcher.go +++ b/core/internal/server/bluez/watcher.go @@ -19,7 +19,7 @@ func WaitForAdapter() error { conn.Signal(signals) defer conn.RemoveSignal(signals) - adapterAdded := []dbus.MatchOption{dbus.WithMatchInterface(objectMgrIface), dbus.WithMatchMember("InterfacesAdded")} + adapterAdded := []dbus.MatchOption{dbus.WithMatchSender(bluezService), dbus.WithMatchInterface(objectMgrIface), dbus.WithMatchMember("InterfacesAdded")} if err := conn.AddMatchSignal(adapterAdded...); err != nil { return err }