Skip to content

Keep the caller's name for Content-Length and Transfer-Encoding - #7

Open
pagpeter wants to merge 1 commit into
masterfrom
caller-request-headers
Open

pagpeter wants to merge 1 commit into
masterfrom
caller-request-headers

Conversation

@pagpeter

@pagpeter pagpeter commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Since bogdanfinn#32 the HTTP/1 request writer sends a single Content-Length with the request's value; before, a caller's content-length went out next to a canonical duplicate. The remaining header always gets the canonical name, though, so a request whose headers are all lower case (as Node's fetch writes them) carries Content-Length among lower-case headers (see tls-client#101).

This keeps bogdanfinn#32's single header and computed value, but writes Content-Length, Transfer-Encoding and Trailer under the name the caller used. If the caller used several spellings or none, the name is canonical, as on master. HTTP/2 lowercases names and is unaffected.

TestRequestWriteKeepsTransferHeaderNames (in requestwrite_test.go) fails on master for lowercase and uppercase Content-Length, transfer-encoding and trailer, and covers two spellings and a GET that drops a caller's Content-Length. go test ./... passes.

🤖 Generated with Claude Code

The HTTP/1 request writer replaces a caller's Content-Length,
Transfer-Encoding or Trailer under any case with the value from the request,
written under the canonical name (bogdanfinn#32). A request whose headers are all lower
case, as Node's fetch writes them, therefore goes out with "Content-Length"
among lower-case headers, which changes how the request looks.

Keep bogdanfinn#32's single header and computed values, but write them under the name
the caller used. If the caller used more than one spelling, or none, the
name is canonical, as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@pagpeter
pagpeter force-pushed the caller-request-headers branch from fb04d8d to 1ee3526 Compare October 26, 2026 10:11
@pagpeter pagpeter changed the title Keep the caller's request headers as written Keep the caller's name for Content-Length and Transfer-Encoding Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant