summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2021-12-01 11:48:03 +0000
committerHubert Hirtz <hubert@hirtz.pm>2021-12-06 11:36:26 +0100
commitee21112465e25f0e003d4254ce839dcde3304e6a (patch)
treecade8141d2e06ac68da17d5883ae0f594ae83283
parentUse second precision for bound computation (diff)
Don't double-enable caps
Some servers might adjust their sasl cap at runtime, e.g. CAP NEW sasl=PLAIN,EXTERNAL […] CAP NEW sasl=PLAIN In this case, we don't really want to `CAP REQ sasl` again, because this will make us re-authenticate a second time. Avoid requesting caps which have already been ACKed.
-rw-r--r--irc/session.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/irc/session.go b/irc/session.go
index b6d5873..87b77b6 100644
--- a/irc/session.go
+++ b/irc/session.go
@@ -650,8 +650,10 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
case "NEW":
for _, c := range ParseCaps(caps) {
s.availableCaps[c.Name] = c.Value
- _, ok := SupportedCapabilities[c.Name]
- if !ok {
+ if _, ok := SupportedCapabilities[c.Name]; !ok {
+ continue
+ }
+ if _, ok := s.enabledCaps[c.Name]; ok {
continue
}
s.out <- NewMessage("CAP", "REQ", c.Name)