mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
net/http: enable Transfer-Encoding: identity without Content-Length for HTTP 1.1.
Use case is SSE recommended configuration: http://www.w3.org/TR/eventsource/#notes Removes a TODO. LGTM=bradfitz R=golang-codereviews, bradfitz, tommi.virtanen CC=golang-codereviews https://golang.org/cl/100000044
This commit is contained in:
parent
705c1f5cd4
commit
2da734189d
2 changed files with 43 additions and 7 deletions
|
|
@ -839,13 +839,20 @@ func (cw *chunkWriter) writeHeader(p []byte) {
|
|||
} else if hasCL {
|
||||
delHeader("Transfer-Encoding")
|
||||
} else if w.req.ProtoAtLeast(1, 1) {
|
||||
// HTTP/1.1 or greater: use chunked transfer encoding
|
||||
// to avoid closing the connection at EOF.
|
||||
// TODO: this blows away any custom or stacked Transfer-Encoding they
|
||||
// might have set. Deal with that as need arises once we have a valid
|
||||
// use case.
|
||||
cw.chunking = true
|
||||
setHeader.transferEncoding = "chunked"
|
||||
// HTTP/1.1 or greater: Transfer-Encoding has been set to identity, and no
|
||||
// content-length has been provided. The connection must be closed after the
|
||||
// reply is written, and no chunking is to be done. This is the setup
|
||||
// recommended in the Server-Sent Events candidate recommendation 11,
|
||||
// section 8.
|
||||
if hasTE && te == "identity" {
|
||||
cw.chunking = false
|
||||
w.closeAfterReply = true
|
||||
} else {
|
||||
// HTTP/1.1 or greater: use chunked transfer encoding
|
||||
// to avoid closing the connection at EOF.
|
||||
cw.chunking = true
|
||||
setHeader.transferEncoding = "chunked"
|
||||
}
|
||||
} else {
|
||||
// HTTP version < 1.1: cannot do chunked transfer
|
||||
// encoding and we don't know the Content-Length so
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue