From ed4a5d35864edac6da02a2ca3970f45b1279911b Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Sat, 26 Oct 2019 22:37:18 -0400 Subject: Handle nick collision --- state.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'state.c') diff --git a/state.c b/state.c index ee3ae78..01829a4 100644 --- a/state.c +++ b/state.c @@ -162,6 +162,12 @@ static void handleReplyISupport(struct Message *msg) { } } +static void handleErrorNicknameInUse(struct Message *msg) { + if (self.nick) return; + if (!msg->params[1]) errx(EX_PROTOCOL, "ERR_NICKNAMEINUSE without nick"); + serverFormat("NICK %s_\r\n", msg->params[1]); +} + static bool fromSelf(const struct Message *msg) { if (!self.nick) return false; size_t len = strlen(self.nick); @@ -226,6 +232,7 @@ static const struct { { "004", handleReplyMyInfo }, { "005", handleReplyISupport }, { "332", handleReplyTopic }, + { "433", handleErrorNicknameInUse }, { "AUTHENTICATE", handleAuthenticate }, { "CAP", handleCap }, { "ERROR", handleError }, -- cgit 1.4.1