commit ee21112

Simon Ser  ·  2021-12-01 11:48:03 +0000 UTC
parent 3904c91
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.
1 files changed,  +4, -2
+4, -2
 1@@ -650,8 +650,10 @@ func (s *Session) handleMessageRegistered(msg Message, playback bool) (Event, er
 2 		case "NEW":
 3 			for _, c := range ParseCaps(caps) {
 4 				s.availableCaps[c.Name] = c.Value
 5-				_, ok := SupportedCapabilities[c.Name]
 6-				if !ok {
 7+				if _, ok := SupportedCapabilities[c.Name]; !ok {
 8+					continue
 9+				}
10+				if _, ok := s.enabledCaps[c.Name]; ok {
11 					continue
12 				}
13 				s.out <- NewMessage("CAP", "REQ", c.Name)