about summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
authorNakidai <nakidai@disroot.org>2026-01-12 16:50:11 +0300
committerNakidai <nakidai@disroot.org>2026-01-12 16:50:11 +0300
commit9436897bfb8b5f72109667d86aed06d9a9d1a693 (patch)
tree63fa207a1190e40933f2655963e3abc2c72f9aed /handle.c
parentf2bccaf552234dd0bea3adbb7640e91e91b5b0e2 (diff)
downloadlibreircd-9436897bfb8b5f72109667d86aed06d9a9d1a693.tar.gz
libreircd-9436897bfb8b5f72109667d86aed06d9a9d1a693.zip
Implement 443
Diffstat (limited to 'handle.c')
-rw-r--r--handle.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/handle.c b/handle.c
index 9d705e0..2a6fe1c 100644
--- a/handle.c
+++ b/handle.c
@@ -99,9 +99,19 @@ mode(struct Message *msg, struct Peer *peer)
 static int
 nick(struct Message *msg, struct Peer *peer)
 {
+	size_t i;
+
 	ensure(msg->params[0] && msg->params[0], reply(peer, 431), 0);
 	ensure(!(peer->modes & RESTRICTED), reply(peer, 484), 0);
 
+	for (i = 0; i < peers_c; ++i)
+		if (peers[i].fd != peer->fd)
+			ensure(
+				!strcmp(peers[i].nick, peer->nick),
+				reply(peer, 433, msg->params[0]),
+				0
+			);
+
 	user_reg(peer, msg->params[0], NULL, NULL, NULL);
 
 	return 0;