From f96f918ff1ab0bb9a516d55869094e314b78852c Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Sat, 13 Apr 2024 21:51:59 -0400 Subject: [PATCH] fix #2144 RPL_NAMREPLY should send = for normal channels and @ for secret channels, as per Modern docs. --- irc/channel.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/irc/channel.go b/irc/channel.go index c6807a5c..4d0216b7 100644 --- a/irc/channel.go +++ b/irc/channel.go @@ -449,6 +449,10 @@ func (channel *Channel) Names(client *Client, rb *ResponseBuffer) { chname := channel.name membersCache, memberDataCache := channel.membersCache, channel.memberDataCache channel.stateMutex.RUnlock() + symbol := "=" // https://modern.ircdocs.horse/#rplnamreply-353 + if channel.flags.HasMode(modes.Secret) { + symbol = "@" + } isOper := client.HasRoleCapabs("sajoin") respectAuditorium := channel.flags.HasMode(modes.Auditorium) && !isOper && (!isJoined || clientData.modes.HighestChannelUserMode() == modes.Mode(0)) @@ -478,7 +482,7 @@ func (channel *Channel) Names(client *Client, rb *ResponseBuffer) { } for _, line := range tl.Lines() { - rb.Add(nil, client.server.name, RPL_NAMREPLY, client.nick, "=", chname, line) + rb.Add(nil, client.server.name, RPL_NAMREPLY, client.nick, symbol, chname, line) } rb.Add(nil, client.server.name, RPL_ENDOFNAMES, client.nick, chname, client.t("End of NAMES list")) }