Hardening
Request-size caps
Request bodies over the configured limit are rejected with 413 before the server finishes buffering them — an oversized upload can't consume unbounded memory.
Slowloris guard
A connection that sends bytes slowly enough to hold a slot open without completing a request — the classic slowloris resource-exhaustion pattern — is detected and closed rather than left to accumulate.
Path-traversal safety
staticHandler(root) resolves requested paths against root and rejects any resolution that escapes it — ../../etc/passwd-style requests are rejected before touching the filesystem.
Streamed responses, no truncation
Large response bodies stream to the client instead of being buffered whole in memory, and streaming is verified not to truncate output under load.
Named crash diagnostics
When a handler panics, the crash now names the request that caused it — see reactor_raise.nim in the repo, added specifically so a production crash points at the request, not just a stack trace.
Bounded outbound proxying
When serve is used to proxy requests outward, the outbound fetch is bounded — a single dead upstream can't turn into a dead server. See reactor_proxy.nim.
