aboutsummaryrefslogtreecommitdiffstats
path: root/usr/tee.c
diff options
context:
space:
mode:
authoruser <user@clank>2026-09-24 13:09:34 +0200
committeruser <user@clank>2026-09-24 13:09:34 +0200
commita73911fcbc5d7d6910d1edcdca38230a519361ca (patch)
tree9e7a3a2774153e50ce8aea3ab3a7d93b1b91cd72 /usr/tee.c
parentusr: ls -l, df, mv, tail, tee, sleep, help, poweroff (diff)
downloadgbos-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/tee.c')
0 files changed, 0 insertions, 0 deletions