about summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
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;