summary refs log tree commit diff
diff options
context:
space:
mode:
authorC. McEnroe2020-02-02 02:30:35 -0500
committerC. McEnroe2020-02-02 02:30:35 -0500
commit14066b79d424561b0ab4be74574edf6fae422378 (patch)
tree900d4d65fedc1f5b7b6fb3ad33d9f8b70698e5eb
parent09754ed91243f497065d888d19fc7c3c63ce19a9 (diff)
Handle nickname errors
-rw-r--r--handle.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/handle.c b/handle.c
index 9157419..350a636 100644
--- a/handle.c
+++ b/handle.c
@@ -85,6 +85,17 @@ static const struct tm *tagTime(const struct Message *msg) {
 
 typedef void Handler(struct Message *msg);
 
+static void handleErrorNicknameInUse(struct Message *msg) {
+	if (self.nick) return;
+	require(msg, false, 2);
+	ircFormat("NICK :%s_\r\n", msg->params[1]);
+}
+
+static void handleErrorErroneousNickname(struct Message *msg) {
+	require(msg, false, 3);
+	errx(EX_CONFIG, "%s: %s", msg->params[1], msg->params[2]);
+}
+
 static void handleCap(struct Message *msg) {
 	require(msg, false, 3);
 	enum Cap caps = capParse(msg->params[2]);
@@ -178,6 +189,8 @@ static const struct Handler {
 	{ "001", handleReplyWelcome },
 	{ "005", handleReplyISupport },
 	{ "372", handleReplyMOTD },
+	{ "432", handleErrorErroneousNickname },
+	{ "433", handleErrorNicknameInUse },
 	{ "900", handleReplyLoggedIn },
 	{ "904", handleErrorSASLFail },
 	{ "905", handleErrorSASLFail },