mirror of
https://github.com/golang/go
synced 2024-11-24 07:10:18 -07:00
http: ServeFile shouldn't send Content-Length when Content-Encoding is set
Fixes #1905 R=rsc CC=golang-dev https://golang.org/cl/4538111
This commit is contained in:
parent
5bf57c1b41
commit
31c79c4eff
@ -175,7 +175,9 @@ func serveFile(w ResponseWriter, r *Request, name string, redirect bool) {
|
||||
}
|
||||
|
||||
w.Header().Set("Accept-Ranges", "bytes")
|
||||
w.Header().Set("Content-Length", strconv.Itoa64(size))
|
||||
if w.Header().Get("Content-Encoding") == "" {
|
||||
w.Header().Set("Content-Length", strconv.Itoa64(size))
|
||||
}
|
||||
|
||||
w.WriteHeader(code)
|
||||
|
||||
|
@ -101,7 +101,7 @@ func TestServeFileContentType(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if h := resp.Header.Get("Content-Type"); h != want {
|
||||
t.Errorf("Content-Type mismatch: got %q, want %q", h, want)
|
||||
t.Errorf("Content-Type mismatch: got %d, want %d", h, want)
|
||||
}
|
||||
}
|
||||
get("text/plain; charset=utf-8")
|
||||
@ -109,6 +109,21 @@ func TestServeFileContentType(t *testing.T) {
|
||||
get(ctype)
|
||||
}
|
||||
|
||||
func TestServeFileWithContentEncoding(t *testing.T) {
|
||||
ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
|
||||
w.Header().Set("Content-Encoding", "foo")
|
||||
ServeFile(w, r, "testdata/file")
|
||||
}))
|
||||
defer ts.Close()
|
||||
resp, err := Get(ts.URL)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if g, e := resp.ContentLength, int64(-1); g != e {
|
||||
t.Errorf("Content-Length mismatch: got %q, want %q", g, e)
|
||||
}
|
||||
}
|
||||
|
||||
func getBody(t *testing.T, req Request) (*Response, []byte) {
|
||||
r, err := DefaultClient.Do(&req)
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user