char/avril
(wip) why'd you have to go and make things so complicaaaaated?
git clone https://git.t4t.associates/char/avril
ab5df08
main
files
| src/ | |
| tests/ | |
| Cargo.toml | 622 B |
| README.md | 1.2 KiB |
avril-http
HTTP/1.1 transport for avril, independent of V8 and runtime capability types.
The engine owns TCP/Unix listeners, request and response streaming, connection
lifetimes, graceful/forced shutdown, and validated WebSocket upgrade handshakes.
Its caller supplies an authorization callback for each listener. Runtime policy
and JS bindings stay in exts/http/src; CLI listeners supply host authority
without changing guest capabilities.
An accepted upgrade returns a stream and a lease. Keep the lease for the entire WebSocket session: dropping it finishes the request and releases the server's shutdown tracking. WebSocket framing and events reuse the runtime's existing client implementation, with server-role masking and closing semantics.
Listener binding is shared with raw sockets through avril-net. Unix listeners
use Linux procfs for FD-relative binding, with pinned parent
directories and identity-checked socket cleanup. Other Unix platforms use ordinary
path-based binding and best-effort identity-checked cleanup. Authorization still
applies, but that fallback can race with filesystem changes. Non-Unix platforms
report an unsupported-operation error.