From 8b34bbf71a38618f92cec8a86ecb45a36e3aba67 Mon Sep 17 00:00:00 2001 From: Marcus Ramberg Date: Fri, 25 Sep 2026 22:44:28 +0200 Subject: [PATCH] fix: scope bluez dbus match to bluezService (#3573) Ensure the watcher only seees bluez messages (cherry picked from commit 05377e690a8865f8835124764ffc317a01479372) --- core/internal/server/bluez/manager.go | 8 +++++--- core/internal/server/bluez/watcher.go | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) 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 }