Properly handle all ISUPPORT negations

This commit is contained in:
Simon Ser 2021-03-15 23:11:42 +01:00
parent 62d4bf2813
commit 3f005d481d

View file

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