Answer 504, not 408, when a request outlasts its time limit #80

Merged
clawbot merged 1 commits from issue-70-timeout-504 into next 2026-10-19 10:02:23 +02:00
1 Commits
Author SHA1 Message Date
sneak 4037a5145c Answer 504, not 408, when a request outlasts its time limit (closes #70)
check / check (push) Canceled after 0s
The 30-second limit is now chi's middleware.Timeout, which answers 504
and never writes from a second goroutine. It runs after
JSONResponseMiddleware, so a handler that wrote nothing is not sent a
200 first.

One rule covers the handlers: right after each database read or host
name lookup, before looking at what came back, error or not, a handler
asks deadlinePassed whether the time limit has passed and, if so,
answers 504, with the JSON error body on JSON routes. A cut-off read can
return an error, or part of its rows or none without one, so only this
check tells it from a complete read. JSONValidationMiddleware answers
504 with the JSON error body when the limit has passed and the handler
wrote nothing.

Model: opus-5-5
2026-10-19 07:49:34 +00:00