diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2015-06-25 16:11:14 -0700 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2015-07-07 21:33:14 +0000 |
| commit | d6e6baa702269ea6d2e61d4fa726bff48560c82c (patch) | |
| tree | f2c3f23b9b04f30ff9409f6a09e0b295b6c17e00 /src/net/http/request_test.go | |
| parent | 143822585e32449860e624cace9d2e521deee62e (diff) | |
| download | go-d6e6baa702269ea6d2e61d4fa726bff48560c82c.tar.xz | |
net/http: fix MaxBytesReader at EOF
Fixes #10884
Change-Id: I7cab3c96548867612f579d2cd4ec736309787443
Reviewed-on: https://go-review.googlesource.com/11961
Reviewed-by: Andrew Gerrand <adg@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/net/http/request_test.go')
| -rw-r--r-- | src/net/http/request_test.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/net/http/request_test.go b/src/net/http/request_test.go index 0668fff9ce..1b36c14c98 100644 --- a/src/net/http/request_test.go +++ b/src/net/http/request_test.go @@ -539,6 +539,38 @@ func TestStarRequest(t *testing.T) { } } +type responseWriterJustWriter struct { + io.Writer +} + +func (responseWriterJustWriter) Header() Header { panic("should not be called") } +func (responseWriterJustWriter) WriteHeader(int) { panic("should not be called") } + +// delayedEOFReader never returns (n > 0, io.EOF), instead putting +// off the io.EOF until a subsequent Read call. +type delayedEOFReader struct { + r io.Reader +} + +func (dr delayedEOFReader) Read(p []byte) (n int, err error) { + n, err = dr.r.Read(p) + if n > 0 && err == io.EOF { + err = nil + } + return +} + +func TestIssue10884_MaxBytesEOF(t *testing.T) { + dst := ioutil.Discard + _, err := io.Copy(dst, MaxBytesReader( + responseWriterJustWriter{dst}, + ioutil.NopCloser(delayedEOFReader{strings.NewReader("12345")}), + 5)) + if err != nil { + t.Fatal(err) + } +} + func testMissingFile(t *testing.T, req *Request) { f, fh, err := req.FormFile("missing") if f != nil { |
