Merge pull request #452 from slingamn/deadlock

fix a deadlock in CS AMODE
This commit is contained in:
Daniel Oaks 2019-04-07 17:10:42 +10:00 committed by GitHub
commit c5dd87a64d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 2 deletions

View File

@ -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