Properly handle all ISUPPORT negations

This commit is contained in:
Simon Ser 2021-03-15 23:11:42 +01:00
parent 62d4bf2813
commit 3f005d481d
1 changed files with 22 additions and 13 deletions

View File

@ -634,20 +634,29 @@ func (uc *upstreamConn) handleMessage(msg *irc.Message) error {
delete(uc.isupport, parameter)
}
if !negate && hasValue {
// TODO: reset to defaults when the token is negated
switch parameter {
case "CHANMODES":
if err := uc.handleChanModes(value); err != nil {
return err
}
case "CHANTYPES":
uc.availableChannelTypes = value
case "PREFIX":
if err := uc.handleMemberships(value); err != nil {
return err
}
var err error
switch parameter {
case "CHANMODES":
if !negate {
err = uc.handleChanModes(value)
} else {
uc.availableChannelModes = stdChannelModes
}
case "CHANTYPES":
if !negate {
uc.availableChannelTypes = value
} else {
uc.availableChannelTypes = stdChannelTypes
}
case "PREFIX":
if !negate {
err = uc.handleMemberships(value)
} else {
uc.availableMemberships = stdMemberships
}
}
if err != nil {
return err
}
}
case "BATCH":