Skip to content

match chunked as the final coding in is_chunked_transfer_encoding#2487

Open
metsw24-max wants to merge 1 commit into
yhirose:masterfrom
metsw24-max:chunked-final-coding-detection
Open

match chunked as the final coding in is_chunked_transfer_encoding#2487
metsw24-max wants to merge 1 commit into
yhirose:masterfrom
metsw24-max:chunked-final-coding-detection

Conversation

@metsw24-max

Copy link
Copy Markdown
Contributor

the server and streaming client only treat a message as chunk-framed when the whole Transfer-Encoding value equals "chunked", so a message whose final coding is chunked but which names another coding first ("gzip, chunked", valid under RFC 9112 6.1 where chunked must be the final coding) is missed. is_chunked_transfer_encoding matches the entire field against "chunked", and open_stream repeats the check case-sensitively with a raw ==. on the server such a request is read as bodiless and its body is left in the socket for a keep-alive connection to parse as the next request; on the client a "Transfer-Encoding: Chunked" response desyncs the stream the same way. this reworks is_chunked_transfer_encoding to compare the last coding token of the last Transfer-Encoding line case-insensitively (RFC 9110 5.3 folds repeated lines into one ordered list) and routes open_stream through it so both paths agree. a unit test covers the helper.

@yhirose

yhirose commented Jul 11, 2026

Copy link
Copy Markdown
Owner

@metsw24-max thank you, but this PR causes CI errors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants