From 67ee36f1ed2069ec90dceb26a29459fd39e6827a Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Thu, 18 Mar 2021 04:10:32 -0400 Subject: [PATCH 1/2] fix #1594 Send a WARN NICK ACCOUNT_REQUIRED on attempt to take a reserved nick --- irc/nickname.go | 1 + 1 file changed, 1 insertion(+) diff --git a/irc/nickname.go b/irc/nickname.go index 33fdbda9..7805f0af 100644 --- a/irc/nickname.go +++ b/irc/nickname.go @@ -44,6 +44,7 @@ func performNickChange(server *Server, client *Client, target *Client, session * } else if err == errNicknameReserved { if !isSanick { rb.Add(nil, server.name, ERR_NICKNAMEINUSE, details.nick, utils.SafeErrorParam(nickname), client.t("Nickname is reserved by a different account")) + rb.Add(nil, server.name, "WARN", "NICK", "ACCOUNT_REQUIRED", utils.SafeErrorParam(nickname), client.t("Nickname is reserved by a different account")) } else { rb.Add(nil, server.name, "FAIL", "SANICK", "NICKNAME_RESERVED", utils.SafeErrorParam(nickname), client.t("Nickname is reserved by a different account")) } From 46c32094d73ae24f6c4e61d85a52b058f2238329 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Thu, 18 Mar 2021 04:38:28 -0400 Subject: [PATCH 2/2] review fixes 1. Use FAIL instead of WARN 2. Use NICKNAME_RESERVED instead of ACCOUNT_REQUIRED 3. Don't send 433 at all for registered clients, just send the FAIL --- irc/nickname.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/irc/nickname.go b/irc/nickname.go index 7805f0af..b8a153ba 100644 --- a/irc/nickname.go +++ b/irc/nickname.go @@ -43,8 +43,10 @@ func performNickChange(server *Server, client *Client, target *Client, session * } } else if err == errNicknameReserved { if !isSanick { - rb.Add(nil, server.name, ERR_NICKNAMEINUSE, details.nick, utils.SafeErrorParam(nickname), client.t("Nickname is reserved by a different account")) - rb.Add(nil, server.name, "WARN", "NICK", "ACCOUNT_REQUIRED", utils.SafeErrorParam(nickname), client.t("Nickname is reserved by a different account")) + if !client.registered { + rb.Add(nil, server.name, ERR_NICKNAMEINUSE, details.nick, utils.SafeErrorParam(nickname), client.t("Nickname is reserved by a different account")) + } + rb.Add(nil, server.name, "FAIL", "NICK", "NICKNAME_RESERVED", utils.SafeErrorParam(nickname), client.t("Nickname is reserved by a different account")) } else { rb.Add(nil, server.name, "FAIL", "SANICK", "NICKNAME_RESERVED", utils.SafeErrorParam(nickname), client.t("Nickname is reserved by a different account")) }