operprefix + ojoin: server oper prefix (!/mode y, above owner) auto-granted to opers + OJOIN command

This commit is contained in:
Jean Chevronnet 2026-08-10 10:05:37 +00:00
parent 8ebb106f97
commit 1dd7f77ca8
106 changed files with 687 additions and 711 deletions

View file

@ -2,15 +2,13 @@
//!
//! - **Client plaintext** connections run on a single **mio epoll reactor**
//! ([`run_reactor`]) — one thread drives tens of thousands of sockets, so the
//! daemon scales to ~50k users without a thread per connection. This is the
//! same readiness layer Tokio is built on; the core stays single-threaded and
//! there is no async runtime.
//! daemon scales to ~50k users without a thread per connection. The core stays
//! single-threaded and there is no async runtime.
//! - **TLS** and **server links** keep a thread per connection (few of them, and
//! a TLS session can't be split across reader+writer threads).
//!
//! Both hand the core the same [`OutSink`] output handle, so the core never
//! knows or cares which model a connection uses. (InspIRCd has a `socketengines/`
//! dir of epoll/kqueue/select backends; this is ours, written from scratch.)
//! knows or cares which model a connection uses.
use std::collections::{HashMap, HashSet};
use std::io::{self, BufRead, BufReader, Read, Write};