don't check extended-monitor

This commit is contained in:
Shivaram Lingamneni 2025-12-19 04:43:22 -05:00
parent eda5c01b2d
commit 385f606d67

View file

@ -28,26 +28,16 @@ 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
}
}
// technically, we should check extended-monitor here, but it's not really necessary
// since clients will ignore AWAY, ACCOUNT, CHGHOST, and SETNAME for users
// they're not tracking
manager.RLock()
defer manager.RUnlock()
for session := range manager.watchedby[cfnick] {
if requireExtendedMonitor && !session.capabilities.Has(caps.ExtendedMonitor) {
continue
if session.capabilities.HasAll(capabs...) {
users.Add(session)
}
if !session.capabilities.HasAll(capabs...) {
continue
}
users.Add(session)
}
}