mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-22 11:59:40 +01:00
fix a deadlock in CS AMODE
This commit is contained in:
parent
8c7027c604
commit
a729772f0c
11
irc/modes.go
11
irc/modes.go
@ -261,6 +261,13 @@ func (channel *Channel) ProcessAccountToUmodeChange(client *Client, change modes
|
||||
return l == r || umodeGreaterThan(l, r)
|
||||
}
|
||||
|
||||
changed := false
|
||||
defer func() {
|
||||
if changed {
|
||||
channel.MarkDirty(IncludeLists)
|
||||
}
|
||||
}()
|
||||
|
||||
account := client.Account()
|
||||
isOperChange := client.HasRoleCapabs("chanreg")
|
||||
|
||||
@ -290,14 +297,14 @@ func (channel *Channel) ProcessAccountToUmodeChange(client *Client, change modes
|
||||
case modes.Add:
|
||||
if targetModeNow != targetModeAfter {
|
||||
channel.accountToUMode[change.Arg] = change.Mode
|
||||
channel.MarkDirty(IncludeLists)
|
||||
changed = true
|
||||
return []modes.ModeChange{change}, nil
|
||||
}
|
||||
return nil, nil
|
||||
case modes.Remove:
|
||||
if targetModeNow == change.Mode {
|
||||
delete(channel.accountToUMode, change.Arg)
|
||||
channel.MarkDirty(IncludeLists)
|
||||
changed = true
|
||||
return []modes.ModeChange{change}, nil
|
||||
}
|
||||
return nil, nil
|
||||
|
Loading…
Reference in New Issue
Block a user