Skip to content

Commit 1fa12b4

Browse files
authored
Fix case of nil/http.NoBody request.Body on interceptor tripperware/middleware (#45)
* no copy if src is nil on NewCopyReadCloser * Update copy_read_closer.go
1 parent 34ad78a commit 1fa12b4

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

interceptor/copy_read_closer.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"io"
66
"io/ioutil"
7+
"net/http"
78
)
89

910
// io.Reader with Read method reset offset when EOF
@@ -42,7 +43,12 @@ type copyReadCloser struct {
4243
// Second read after EOF
4344
// copyBuffered --> copy BufReader simple buffer with fix size
4445
// when BufReader is EOF offset is reset to read again
45-
func NewCopyReadCloser(src io.ReadCloser) *copyReadCloser {
46+
func NewCopyReadCloser(src io.ReadCloser) io.ReadCloser {
47+
// No copying needed on nil or http.NoBody.
48+
if src == nil || src == http.NoBody {
49+
return src
50+
}
51+
4652
buf := &bytes.Buffer{}
4753
tr := &copyReadCloser{
4854
copyTemp: buf,
@@ -56,7 +62,7 @@ func NewCopyReadCloser(src io.ReadCloser) *copyReadCloser {
5662
return tr
5763
}
5864

59-
func (tr *copyReadCloser)Read(p []byte) (n int, err error) {
65+
func (tr *copyReadCloser) Read(p []byte) (n int, err error) {
6066
n, err = tr.ReadCloser.Read(p)
6167
if err == io.EOF {
6268
if tr.copy == nil {

0 commit comments

Comments
 (0)