Loadable everything
A client command, a channel mode, a user mode, a flood-control
check — each one is its own module, loaded per
modules.conf and reloadable without taking the
network down.
Started as patches to ircd-hybrid to link servers by hostname
instead of a static IP (for a network partly running behind a
cablemodem's dynamic address); everything past the borrowed
dlink linked-list code was written from scratch
from there.
The story →
servauth
DNS resolution, ident (RFC 1413), and open-proxy scanning for
every connecting client all run in one dedicated child process
— lib/servauth/ — so the main event loop never
blocks on any of the three.
K-lines and G-lines don't stop at the application layer: a
banned address gets pushed onto a BPF socket filter on Linux,
refused before it costs the daemon a read().
Features →
WebSocket gateway
lc_lws speaks IRC over ws:///wss://
on the same listener a normal client would use — no separate
bouncer process — and self-hosts
gamja, a small
web IRC client, straight off the wire.
Feeds directly into the IRCv3 migration:
a browser client is the fastest way to notice what modern IRC
clients actually expect.
IRCv3 plan →