trillium-server-common-v0.7.3
·
47 commits
to main
since this release
Added
QuicConfig::bind_with_socket(self, socket, runtime, info)— new non-breaking trait method that
takes a pre-claimedstd::net::UdpSocketinstead of aSocketAddr. Default implementation
delegates back tobindviasocket.local_addr(). Adapters should override to consume the
pre-claimed socket directly.ArcedQuicEndpoint::local_addr(&self) -> io::Result<SocketAddr>— the local address the endpoint
is bound to.QuicEndpoint::local_addr(&self) -> io::Result<SocketAddr>— the local address the endpoint is
bound to. The default implementation returnsio::ErrorKind::Unsupported; adapters with a bound
UDP socket override it to return the actual address.bind_reuse_port(addr) -> io::Result<TcpListener>(Unix only, excluding Apple platforms) — bind a
non-blocking stdTcpListenerwithSO_REUSEPORT+SO_REUSEADDRfor kernel connection fan-out
across a listener group. Gated off on Apple platforms, whereSO_REUSEPORTdelivers every
connection to a single listener rather than fanning out.Config::listeners(self) -> ListenerConfig— bridge from the single-listenerConfiginto the
multi-listenerListenerConfig, carrying over global server configuration (HTTP config, shared
state, swansong, nodelay, max-connections, signals) but no listener binding (bind explicitly on
the builder). Available before an acceptor/QUIC config is set.BoundInfo::listeners() -> &[trillium::Listener]— every listener the server is bound to. The
builder produces onetrillium::Listenerperbind_*(TLS-vs-plaintext from each acceptor); the
single-listenerConfigpath synthesizes its own.- Each
Connnow carries its originatingtrillium::Listenerin state (readable via
conn.state::<Listener>()), across HTTP/1, HTTP/2, and HTTP/3. The ingressSocketAddrcontinues
to be stamped alongside it for addressed listeners, so existingconn.state::<SocketAddr>()
readers are unaffected; Unix-socket conns now have provenance they previously lacked.