mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-25 13:29:27 +01:00
correctly account for nickname in CAP LS arithmetic
The arithmetic was assuming that the nickname is * (which it is pre-registration). However, we were sending the actual nickname post-registration. It would be simpler to always send *, but it appears that the nickname is actually required by the spec: >Replies from the server must [sic] contain the client identifier name or >asterisk if one is not yet available.
This commit is contained in:
parent
c5746c5105
commit
76f7748c8a
@ -527,9 +527,9 @@ func capHandler(server *Server, client *Client, msg ircmsg.Message, rb *Response
|
||||
// 1. WeeChat 1.4 won't accept the CAP reply unless it contains the server.name source
|
||||
// 2. old versions of Kiwi and The Lounge can't parse multiline CAP LS 302 (#661),
|
||||
// so try as hard as possible to get the response to fit on one line.
|
||||
// :server.name CAP * LS * :<tokens>\r\n
|
||||
// 1 [ 7 ] [4 ] [2 ]
|
||||
maxLen := (MaxLineLen - 2) - 1 - len(server.name) - 7 - len(subCommand) - 4
|
||||
// :server.name CAP nickname LS * :<tokens>\r\n
|
||||
// 1 [5 ] 1 [4 ] [2 ]
|
||||
maxLen := (MaxLineLen - 2) - 1 - len(server.name) - 5 - len(details.nick) - 1 - len(subCommand) - 4
|
||||
capLines := cset.Strings(version, values, maxLen)
|
||||
for i, capStr := range capLines {
|
||||
if version >= caps.Cap302 && i < len(capLines)-1 {
|
||||
|
Loading…
Reference in New Issue
Block a user