commit ef46f82
Hubert Hirtz
·
2020-08-17 18:30:36 +0000 UTC
parent 190343e
irc: Send NAMES when multi-prefix is negociated
1 files changed,
+21,
-12
+21,
-12
1@@ -469,18 +469,6 @@ func (s *Session) handleStart(msg Message) (err error) {
2 return
3 }
4 }
5- case "ACK":
6- for _, c := range strings.Split(msg.Params[2], " ") {
7- s.enabledCaps[c] = struct{}{}
8-
9- if s.auth != nil && c == "sasl" {
10- h := s.auth.Handshake()
11- err = s.send("AUTHENTICATE %s\r\n", h)
12- if err != nil {
13- return
14- }
15- }
16- }
17 default:
18 s.handle(msg)
19 }
20@@ -535,6 +523,27 @@ func (s *Session) handle(msg Message) (err error) {
21 case "ACK":
22 for _, c := range strings.Split(msg.Params[2], " ") {
23 s.enabledCaps[c] = struct{}{}
24+
25+ if s.auth != nil && c == "sasl" {
26+ h := s.auth.Handshake()
27+ err = s.send("AUTHENTICATE %s\r\n", h)
28+ if err != nil {
29+ return
30+ }
31+ } else if len(s.channels) != 0 && c == "multi-prefix" {
32+ // TODO merge NAMES commands
33+ var sb strings.Builder
34+ sb.Grow(512)
35+ for _, c := range s.channels {
36+ sb.WriteString("NAMES ")
37+ sb.WriteString(c.Name)
38+ sb.WriteString("\r\n")
39+ }
40+ err = s.send(sb.String())
41+ if err != nil {
42+ return
43+ }
44+ }
45 }
46 case "NAK":
47 for _, c := range strings.Split(msg.Params[2], " ") {