Closed neild closed 1 week ago
Change https://go.dev/cl/516200 mentions this issue: http2: add Server.WriteByteTimeout
I'd originally thought to propose adding WriteByteTimeout to HTTP/1 connections as well
There is #61568 for HTTP/1.
There is https://github.com/golang/go/issues/61568 for HTTP/1.
Thanks, I missed that one. Will comment there.
This proposal has been added to the active column of the proposals project and will now be reviewed at the weekly proposal review meetings. — rsc for the proposal review group
Have all remaining concerns about this proposal been addressed?
The proposal is to add one new field to http2.Server:
// WriteByteTimeout is the timeout after which a connection will be
// closed if no data can be written to it. The timeout begins when data is
// available to write, and is extended whenever any bytes are written.
WriteByteTimeout time.Duration
Based on the discussion above, this proposal seems like a likely accept. — rsc for the proposal review group
The proposal is to add one new field to http2.Server:
// WriteByteTimeout is the timeout after which a connection will be
// closed if no data can be written to it. The timeout begins when data is
// available to write, and is extended whenever any bytes are written.
WriteByteTimeout time.Duration
No change in consensus, so accepted. 🎉 This issue now tracks the work of implementing the proposal. — rsc for the proposal review group
The proposal is to add one new field to http2.Server:
// WriteByteTimeout is the timeout after which a connection will be
// closed if no data can be written to it. The timeout begins when data is
// available to write, and is extended whenever any bytes are written.
WriteByteTimeout time.Duration
Change https://go.dev/cl/601496 mentions this issue: http2: add Server.WriteByteTimeout
This issue is part of a project to move
x/net/http2
intostd
: #67810This specific proposal makes the HTTP/2 client and server configurations more consistent, which will simplify adding these configurations to
net/http
. (Also, it seems like a reasonable feature considered on its own.)HTTP/2 transports have a
Transport.WriteByteTimeout
configuration setting, which sets the maximum time a single write to a connection may take. The timeout begins when a write is made, and is extended whenever any data is written.This setting can be used to detect unresponsive connections when the timeout for an entire request may be large or unbounded.
I propose extending this feature to apply to HTTP/2 server connections.
I'd originally thought to propose adding
WriteByteTimeout
to HTTP/1 connections as well, but there's less motivation for it there: HTTP/1 connections only handle a single request at at time, and a connection can only be reused after a complete request/response cycle is completed. There's less need to separate the response write timeout from an individual byte-write timeout. In addition, it's pretty much impossible to implement a byte-write timeout when using thesendfile
path.Maybe it would make sense to add something like this for HTTP/1, but it's simpler to consider HTTP/2 for now.