You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// ErrContentLength is returned by ResponseWriter.Write calls
// when a Handler set a Content-Length response header with a
// declared size and then attempted to write more bytes than
// declared.
ErrContentLength = errors.New("http: wrote more than the declared Content-Length")
Writing too many bytes to an HTTP/2 body doesn't return ErrContentLength, however, for two reasons:
The HTTP/2 ResponseWriter returns a different error when detecting a too-long body.
The accounting for how many bytes have been written can fail to detect a too-long body until after the ResponseWriter.Write call has returned.
The existing test TestIdentityResponse fails when run in HTTP/2 mode.
The text was updated successfully, but these errors were encountered:
neild
added
the
NeedsFix
The path to resolution is known, but the work has not been done.
label
Oct 4, 2022
…ehavior
Rather than requiring that HTTP/1 and HTTP/2 servers behave identically
when a misbehaving handler writes too many bytes, check only that both
behave reasonably.
In particular, allow the handler to defer detection of a write overrun
until flush time, and permit the HTTP/2 handler to reset the stream
rather than requring it to return a truncated body as HTTP/1 must.
For #56019
Change-Id: I0838e550c4fc202dcbb8bf39ce0fa4a367ca7e71
Reviewed-on: https://go-review.googlesource.com/c/go/+/577415
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Writing too many bytes to an HTTP/2 body doesn't return
ErrContentLength
, however, for two reasons:ResponseWriter
returns a different error when detecting a too-long body.ResponseWriter.Write
call has returned.The existing test
TestIdentityResponse
fails when run in HTTP/2 mode.The text was updated successfully, but these errors were encountered: