mirror of
https://github.com/caddyserver/caddy.git
synced 2026-10-31 00:10:10 -04:00
* caddyhttp: let handler read deadlines cap the idle read timeout IdleTimeoutReader sets the read deadline before every body read, so a deadline set by a handler with http.ResponseController.SetReadDeadline() was replaced before it could take effect. Since #7913, handlers can't bound a stalled request body more tightly than read_body. A handler's read deadline is now routed to the IdleTimeoutReader, which applies it right away and keeps it as a ceiling for every idle reset and for the deadline put back between HTTP/2 reads. A handler can make the idle timeout stricter but can't loosen it, and a zero deadline removes the ceiling, as #8145 does for write deadlines. * caddyhttp: keep the hard read deadline and the drain deadline with handler deadlines SetReadDeadline installed the handler's deadline as is, so a later or zero deadline lifted read_timeout. It now installs the earlier of the two. HandlerDone cleared a deadline set by the handler before arming the HTTP/1 drain deadline, leaving the post-handler drain unbounded. * caddyhttp: keep the idle deadline of a read in flight on handler deadlines SetReadDeadline replaced the idle deadline armed for a blocked read with the handler's ceiling, so a zero or later deadline lifted the idle timeout for that read. It now installs the earlier of the two until the read returns. * caddyhttp: keep the expired drain deadline of a timed-out body on handler deadlines After a body read timed out on HTTP/1, a zero or later deadline set by the handler replaced the expired one kept to bound net/http's post-handler drain.