1.2: backport minor Rack 2.2-era spec compatibility fixes - #479
Merged
Merged
Conversation
Every bodyless error response returned (and mutated) the same Hash object stored in the DEFAULT_HEADERS constant, so headers set for one response leaked into all subsequent error responses.
read(0) fell into the read-everything path (readUntil treats a zero count as unlimited) and consumed the whole input stream, instead of returning "" like IO#read as the Rack SPEC describes.
The Rack SPEC requires the original body to be closed (if it responds to close) whenever it is replaced - the rendered error template was dropping custom error app bodies without closing them.
Rack does not mandate response header name casing (and Rack 3.x apps lower-case them), yet the chunked detection, the chunked-header strip and the flush-on-no-content-length logic only matched the conventional Capitalized-Names - a lower-case header silently bypassed them.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes a handful of smaller spec compatiibility issues detected for Rack 3.x which also apply to Rack 2.2