Join all channels with a single JOIN message

This commit is contained in:
Eyal Sawady 2020-05-25 20:15:57 -04:00 committed by Simon Ser
parent b1367a0608
commit c547aa0278
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
1 changed files with 11 additions and 8 deletions

View File

@ -525,16 +525,19 @@ func (uc *upstreamConn) handleMessage(msg *irc.Message) error {
dc.updateSupportedCaps() dc.updateSupportedCaps()
}) })
// TODO: split this into multiple messages if need be
var names, keys []string
for _, ch := range uc.network.channels { for _, ch := range uc.network.channels {
params := []string{ch.Name} names = append(names, ch.Name)
if ch.Key != "" { keys = append(keys, ch.Key)
params = append(params, ch.Key)
}
uc.SendMessage(&irc.Message{
Command: "JOIN",
Params: params,
})
} }
uc.SendMessage(&irc.Message{
Command: "JOIN",
Params: []string{
strings.Join(names, ","),
strings.Join(keys, ","),
},
})
case irc.RPL_MYINFO: case irc.RPL_MYINFO:
if err := parseMessageParams(msg, nil, &uc.serverName, nil, &uc.availableUserModes, nil); err != nil { if err := parseMessageParams(msg, nil, &uc.serverName, nil, &uc.availableUserModes, nil); err != nil {
return err return err