diff options
| author | user <user@clank> | 2026-09-24 13:09:34 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-09-24 13:09:34 +0200 |
| commit | a73911fcbc5d7d6910d1edcdca38230a519361ca (patch) | |
| tree | 9e7a3a2774153e50ce8aea3ab3a7d93b1b91cd72 /usr/dhcp.c | |
| parent | usr: ls -l, df, mv, tail, tee, sleep, help, poweroff (diff) | |
| download | gbos-a73911fcbc5d7d6910d1edcdca38230a519361ca.tar.gz gbos-a73911fcbc5d7d6910d1edcdca38230a519361ca.tar.xz gbos-a73911fcbc5d7d6910d1edcdca38230a519361ca.zip | |
ircd: enforce unique nicknames (433), announce renames, fold case
NICK overwrote the nick with whatever was asked for, so two clients could
both be "alice": /NAMES listed her twice and a private message only ever
reached whichever slot came first in the table.
- A nick already held by another client is refused with 433
ERR_NICKNAMEINUSE and the client keeps the one it had. Unregistered
clients simply stay unregistered until they pick a free one, which is what
every client already expects.
- A NICK from a registered client is a rename: it is announced to the client
and to its channel, so nobody's user list goes stale.
- IRC names fold case, so "Alice" is "alice" - for the uniqueness check, for
PRIVMSG by nick, and for channels ("#GB" is "#gb"). One irceq() replaces
the exact-match compare that was used for all three.
gbos's own irc(1) already retries 433 by appending '_', so two Game Boys with
the default nick now sort themselves out: verified with a GB running ircd, a
laptop client holding "sl0pboy", and a second GB arriving as "sl0pboy_" -
both in #gbos, messages crossing both ways.
Diffstat (limited to 'usr/dhcp.c')
0 files changed, 0 insertions, 0 deletions
