From: Petar Maymounkov Date: Fri, 19 Feb 2010 07:38:17 +0000 (-0800) Subject: http: do not edit Response.ContentLength in Response.Write X-Git-Tag: weekly.2010-02-23~36 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e3b94edc030d7a1f2aba0a325e2d0cd0929dd8df;p=gostls13.git http: do not edit Response.ContentLength in Response.Write R=rsc CC=golang-dev https://golang.org/cl/207061 --- diff --git a/src/pkg/http/response.go b/src/pkg/http/response.go index b3743a88cb..ffdcaa2386 100644 --- a/src/pkg/http/response.go +++ b/src/pkg/http/response.go @@ -398,11 +398,12 @@ func (resp *Response) Write(w io.Writer) os.Error { io.WriteString(w, strconv.Itoa(resp.StatusCode)+" "+text+"\r\n") // Sanitize the field triple (Body, ContentLength, TransferEncoding) + contentLength := resp.ContentLength if noBodyExpected(resp.RequestMethod) { resp.Body = nil resp.TransferEncoding = nil // resp.ContentLength is expected to hold Content-Length - if resp.ContentLength < 0 { + if contentLength < 0 { return ErrMissingContentLength } } else { @@ -410,9 +411,9 @@ func (resp *Response) Write(w io.Writer) os.Error { resp.TransferEncoding = nil } if chunked(resp.TransferEncoding) { - resp.ContentLength = -1 + contentLength = -1 } else if resp.Body == nil { // no chunking, no body - resp.ContentLength = 0 + contentLength = 0 } } @@ -422,9 +423,9 @@ func (resp *Response) Write(w io.Writer) os.Error { if chunked(resp.TransferEncoding) { io.WriteString(w, "Transfer-Encoding: chunked\r\n") } else { - if resp.ContentLength > 0 || resp.RequestMethod == "HEAD" { + if contentLength > 0 || resp.RequestMethod == "HEAD" { io.WriteString(w, "Content-Length: ") - io.WriteString(w, strconv.Itoa64(resp.ContentLength)+"\r\n") + io.WriteString(w, strconv.Itoa64(contentLength)+"\r\n") } } if resp.Header != nil { @@ -477,7 +478,7 @@ func (resp *Response) Write(w io.Writer) os.Error { err = cw.Close() } } else { - _, err = io.Copy(w, io.LimitReader(resp.Body, resp.ContentLength)) + _, err = io.Copy(w, io.LimitReader(resp.Body, contentLength)) } if err != nil { return err