From ee21112465e25f0e003d4254ce839dcde3304e6a Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 1 Dec 2021 11:48:03 +0000 Subject: Don't double-enable caps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- irc/session.go | 6 ++++-- 1 file 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) -- cgit v1.2.3