Caddy 2.11.6 → 2.11.7
1 release · 0 breaking changes · 0 security fixes · 0 advisories fixed
0security0breaking0deprecated14feature1fix
Breaking changes
None in the release notes.
Security changes
None in the release notes.
Every release in between
featureFixed: crash and dropped streams caused by the new idle timeouts. 2.11.6 introduced default idle read/write timeouts, which caused some problems:
featureIn 2.11.6, the request body's idle deadline could outlive the handler that set it: Both are fixed in #8107. Thanks @steadytao!
featureOver HTTP/2, Caddy could panic with a nil pointer dereference when the reverse proxy was still reading a request body after the handler had returned. (#8101)
featureOver HTTP/1.1, streaming responses to requests with a body, such as SSE clients that open the stream with a POST, were cut off exactly 60 seconds after the body was read. (#8103)
featureOver HTTP/2, streaming responses that paused between writes for longer than write_idle (1 minute by default), like quiet SSE streams, were reset with a stream error. As documented, only a write that stalls should count. Thanks @WeidiDeng! (#8118, #8119)
featureFixed: placeholders for missing cookies are empty again. Since 2.11.6, places that keep unknown placeholders as written, like respond headers, would output {http.request.cookie.} literally when the cookie wasn't in the request. The same happened to {http.request.tls.} on plain HTTP requests. Both…
featureNew: support for the Incremental header field (RFC 10036). It's the standard replacement for NGINX's proprietary X-Accel-Buffering header. If an upstream response has Incremental: ?1, reverse_proxy forwards it immediately, the same as flush_interval -1, and encode streams it instead of holding it…
featureIf the request_buffers or response_buffers options would prevent incremental forwarding, Caddy responds with 501 Not Implemented instead of silently buffering, as the RFC requires.
featureThe new proxy_status_name option adds a Proxy-Status header to those responses, explaining why the message was refused.
featureFaster TLS handshakes: When nothing subscribes to certificate events and debug logging is off, CertMagic no longer builds event data for every handshake. Certificate lookup per handshake is about twice as fast, with 10 allocations instead of 15. Thanks @u5surf! (#8010)
featureUnix sockets: When a reload moves a listener (or the admin endpoint) off a Unix socket, the old socket now closes right away and its file is removed. Before, clients connecting to the old path would hang until the next garbage collection, about 2 minutes later. Thanks @littfed! (#8061)
featureHeaders handler: Multiple Set-Cookie values in a JSON config's set are now sent as separate header fields, instead of being joined with commas into one field that clients can't parse. Thanks @Indra55! (#8080)
featurecaddy fmt no longer deletes an opening brace at the very end of the input. Thanks @n0liu! (#8047)
otherevents: tell CertMagic which events are worth emitting
featurefeat: implement the Incremental header field (RFC 10036)
othercaddyfile: Keep an opening brace that ends the input
otherlisteners: close unix socket immediately and unlink file on reload
otherreverseproxy: stabilise half-close test
othercaddyhttp: keep absent optional placeholders empty
otherheaders: Preserve separate Set-Cookie values
othercaddyhttp: end request-body deadline ownership with handler
fixtimeouts: fix idle writer terminate h2 response writers between writes