8 Commits
Author SHA1 Message Date
glm-5.3-flash 9e2d70e59a Add missed reload-gate FD budget check file (review #010 C2) 2026-09-13 07:58:18 +00:00
glm-5.3-flash da4c3a8a12 Cross-check max_connections against RLIMIT_NOFILE at startup/reload (review #010 C2) 2026-09-13 07:58:13 +00:00
glm-5.3-flash 1bbb9c237c Share connection semaphore across listeners (review #010 C4) 2026-09-13 07:46:58 +00:00
glm-5.3-flash 9e26295cf7 Add TLS handshake timeout (review #010 C3)
tls_handshake_timeout_secs (default 10s, must be > 0) wraps
tls_acceptor.accept() in tokio::time::timeout so stalled handshakes
(slowloris / crawler slow-handshake vector) can no longer hold an FD +
semaphore permit indefinitely. Config plumbing through FullConfig /
StaticConfig / validation / reload diff + docs.
2026-09-13 07:16:43 +00:00
glm-5.3-flash 978a362536 Fix review #010 frontmatter YAML + reorder next steps (C3 > C4 > C2) 2026-09-13 07:10:12 +00:00
glm-5.3-flash e1a2d28862 Fix EMFILE accept-loop busy-spin with error backoff + log de-dup (review #010 C1) 2026-09-13 06:58:24 +00:00
glm-5.3-flash 00b05ee4b6 Add review #010: EMFILE accept-loop flood (6M ERROR lines in 2h) + mitigation 2026-09-12 08:04:24 +00:00
glm-5.3-flash 203fcadffd Fix Host header for HTTP/2 upstream requests (Gitea self-check mismatch)
HTTP/2 requests carry the client's host only in the :authority
pseudo-header, with no literal Host header. build_upstream_request
copied headers verbatim, so the upstream request had no Host, and
hyper-util's legacy client (set_host=true default) filled it in from
the upstream URI, sending Host: 127.0.0.1:3000 instead of the client's
host. Backends like Gitea build absolute URLs from that host, causing
the admin self-check mismatch and intermittent wrong asset URLs.

Reconstruct Host from the request URI authority for HTTP/2, preserve
the client's Host header for HTTP/1.1, and let the URI authority win
if both are present.
2026-09-12 05:38:52 +00:00