]> Cypherpunks repositories - gostls13.git/commit
net/http: keep Content-Encoding in Error, add GODEBUG for ServeContent
authorDamien Neil <dneil@google.com>
Mon, 17 Jun 2024 19:30:19 +0000 (12:30 -0700)
committerDamien Neil <dneil@google.com>
Tue, 18 Jun 2024 19:33:10 +0000 (19:33 +0000)
commit879ace143490dba75a8499c7f4cea43926423c0f
treefe245710e2d0641e79f21e62bc3f5409dccc239a
parent2b12bbcb4561a6f45e8036e71c8440b7bca50de6
net/http: keep Content-Encoding in Error, add GODEBUG for ServeContent

This reverts the changes to Error from CL 571995, and adds a
GODEBUG controlling the changes to ServeContent/ServeFile/ServeFS.

The change to remove the Content-Encoding header when serving an error
breaks middleware which sets Content-Encoding: gzip and wraps a
ResponseWriter in one which compresses the response body.

This middleware already breaks when ServeContent handles a Range request.
Correct uses of ServeContent which serve pre-compressed content with
a Content-Encoding: gzip header break if we don't remove that header
when serving errors. Therefore, we keep the change to ServeContent/
ServeFile/ServeFS, but we add the ability to disable the new behavior
by setting GODEBUG=httpservecontentkeepheaders=1.

We revert the change to Error, because users who don't want to include
a Content-Encoding header in errors can simply remove the header
themselves, or not add it in the first place.

Fixes #66343

Change-Id: Ic19a24b73624a5ac1a258ed7a8fe7d9bf86c6a38
Reviewed-on: https://go-review.googlesource.com/c/go/+/593157
Reviewed-by: Russ Cox <rsc@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
doc/godebug.md
doc/next/6-stdlib/99-minor/net/http/66343.md
src/internal/godebugs/table.go
src/net/http/fs.go
src/net/http/fs_test.go
src/net/http/serve_test.go
src/net/http/server.go
src/runtime/metrics/doc.go