From eda5c01b2d81eef3b3bf2b659e126c4ae9b96d1e Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Mon, 15 Dec 2025 22:58:07 -0500 Subject: [PATCH] fix #2309, take 2 --- irc/monitor.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/irc/monitor.go b/irc/monitor.go index 46ab46e6..617648b7 100644 --- a/irc/monitor.go +++ b/irc/monitor.go @@ -28,12 +28,26 @@ func (mm *MonitorManager) Initialize() { // AddMonitors adds clients using extended-monitor monitoring `client`'s nick to the passed user set. func (manager *MonitorManager) AddMonitors(users utils.HashSet[*Session], cfnick string, capabs ...caps.Capability) { + var requireExtendedMonitor bool + for _, c := range capabs { + // these are the four capabilities that explicitly require extended-monitor; + // draft/metadata-2 does not + if c == caps.AccountNotify || c == caps.AwayNotify || c == caps.ChgHost || c == caps.SetName { + requireExtendedMonitor = true + break + } + } + manager.RLock() defer manager.RUnlock() for session := range manager.watchedby[cfnick] { - if session.capabilities.Has(caps.ExtendedMonitor) && session.capabilities.HasAll(capabs...) { - users.Add(session) + if requireExtendedMonitor && !session.capabilities.Has(caps.ExtendedMonitor) { + continue } + if !session.capabilities.HasAll(capabs...) { + continue + } + users.Add(session) } }