diff options
| author | Nakidai <nakidai@disroot.org> | 2026-01-10 16:38:11 +0300 |
|---|---|---|
| committer | Nakidai <nakidai@disroot.org> | 2026-01-10 16:38:11 +0300 |
| commit | f2bccaf552234dd0bea3adbb7640e91e91b5b0e2 (patch) | |
| tree | 2ebf0fe4c58524a74465e0c3d46d192b5647c8c3 | |
| parent | 76e2c978829bc6ff7bfe6c49bfa3739e19370990 (diff) | |
| download | libreircd-master.tar.gz libreircd-master.zip | |
So, it fixes a situation when an already registered user wants to change their nick and ircd welcomes they
| -rw-r--r-- | user.c | 5 |
1 files changed, 4 insertions, 1 deletions
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); |