1
0
Fork 0
forked from External/ergo

Updates to channel persistence

1. Implement persistent channel keys (#208)
2. Persist changes to registered channel modes
3. Backend changes for persisting operator status (partial #198)
This commit is contained in:
Shivaram Lingamneni 2018-04-03 21:49:40 -04:00
parent f41067029e
commit 8fb5a38851
8 changed files with 291 additions and 110 deletions

View file

@ -1351,20 +1351,17 @@ func cmodeHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Res
applied = channel.ApplyChannelModeChanges(client, msg.Command == "SAMODE", changes, rb)
}
// save changes to banlist/exceptlist/invexlist
var banlistUpdated, exceptlistUpdated, invexlistUpdated bool
// save changes
var includeFlags uint
for _, change := range applied {
if change.Mode == modes.BanMask {
banlistUpdated = true
} else if change.Mode == modes.ExceptMask {
exceptlistUpdated = true
} else if change.Mode == modes.InviteMask {
invexlistUpdated = true
includeFlags |= IncludeModes
if change.Mode == modes.BanMask || change.Mode == modes.ExceptMask || change.Mode == modes.InviteMask {
includeFlags |= IncludeLists
}
}
if (banlistUpdated || exceptlistUpdated || invexlistUpdated) && channel.IsRegistered() {
go server.channelRegistry.StoreChannel(channel, true)
if channel.IsRegistered() && includeFlags != 0 {
go server.channelRegistry.StoreChannel(channel, includeFlags)
}
// send out changes