Properly handle all ISUPPORT negations
This commit is contained in:
parent
62d4bf2813
commit
3f005d481d
23
upstream.go
23
upstream.go
@ -634,22 +634,31 @@ func (uc *upstreamConn) handleMessage(msg *irc.Message) error {
|
||||
delete(uc.isupport, parameter)
|
||||
}
|
||||
|
||||
if !negate && hasValue {
|
||||
// TODO: reset to defaults when the token is negated
|
||||
var err error
|
||||
switch parameter {
|
||||
case "CHANMODES":
|
||||
if err := uc.handleChanModes(value); err != nil {
|
||||
return err
|
||||
if !negate {
|
||||
err = uc.handleChanModes(value)
|
||||
} else {
|
||||
uc.availableChannelModes = stdChannelModes
|
||||
}
|
||||
case "CHANTYPES":
|
||||
if !negate {
|
||||
uc.availableChannelTypes = value
|
||||
} else {
|
||||
uc.availableChannelTypes = stdChannelTypes
|
||||
}
|
||||
case "PREFIX":
|
||||
if err := uc.handleMemberships(value); err != nil {
|
||||
if !negate {
|
||||
err = uc.handleMemberships(value)
|
||||
} else {
|
||||
uc.availableMemberships = stdMemberships
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
case "BATCH":
|
||||
var tag string
|
||||
if err := parseMessageParams(msg, &tag); err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user