From f2bccaf552234dd0bea3adbb7640e91e91b5b0e2 Mon Sep 17 00:00:00 2001 From: Nakidai Date: Sat, 10 Jan 2026 16:38:11 +0300 Subject: Check whether user was registered or not in user_reg() So, it fixes a situation when an already registered user wants to change their nick and ircd welcomes they --- user.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/user.c b/user.c index 8131c84..f2572a9 100644 --- a/user.c +++ b/user.c @@ -49,9 +49,12 @@ user_mode(char m) void user_reg(struct Peer *peer, const char *nick, const char *user, const char *real, const char *mode) { + int was_registered; unsigned long m; const char *p; + was_registered = *peer->nick && *peer->user && *peer->real; + if (nick) strlcpy(peer->nick, nick, sizeof(peer->nick)); if (user) @@ -71,7 +74,7 @@ user_reg(struct Peer *peer, const char *nick, const char *user, const char *real peer->modes |= WALLOPS; } skip: - if (*peer->nick && *peer->user && *peer->real) + if (!was_registered && *peer->nick && *peer->user && *peer->real) { peer->type = CLIENT; reply(peer, 1); -- cgit 1.4.1