fix(edge): suppress dead HTTP/3 advert with Alt-Svc: clear #119
Reference in New Issue
Block a user
Delete Branch "feature/edge-suppress-http3-altsvc"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Suppress the edge's dead HTTP/3 advertisement: a site-level
header Alt-Svc clearindeploy/caddy/Caddyfile, plusdocs/EDGE_HTTP3.md(diagnosis + verify + alternatives)linked from
ARCHITECTURE.md.Why
Caddy enables HTTP/3 by default on any TLS listener and emits
Alt-Svc: h3=":443"; ma=2592000,but UDP/443 is never reachable: the prod compose maps only
"443:443"(TCP) and ufw opens443/tcp(test contour: the host caddy publishes only:443/tcp). A client that cached the30-day advert tries QUIC first on later opens, gets no response, and waits for the QUIC attempt
to time out before falling back to h2 — which surfaced as the Telegram Mini App intermittently
hanging on load (a barely-noticeable pause up to a blank window that never finishes downloading
index.html). The h2/TCP serving path itself is healthy (~10 ms TTFB, no tail).Alt-Svc: clearactively drops any cached alternative and pins clients to h2/h1.Scope
A/B confirmed live: ~20 clean Mini App opens vs the prior intermittent stalls, prod left as the
h3 control.
:80and the host caddy re-stamps its own Alt-Svc,so the repo directive is a harmless no-op there.
Verification
caddy validate→ Valid configuration.Alt-Svc: clearstamped on every route (/telegram/,/app/,/, all200) against the realupstreams on
scrabble-internal.Deploy
Prod is a manual rollout (
workflow_dispatchfrommaster, after adevelopment → masterpromotion) — owner-driven. No schema change; config-only and rollback-safe.