diff options
Diffstat (limited to 'handle.c')
| -rw-r--r-- | handle.c | 10 |
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; |