diff --git a/internal/tun2/connection.go b/internal/tun2/connection.go index 20f05dc..9db2195 100644 --- a/internal/tun2/connection.go +++ b/internal/tun2/connection.go @@ -2,8 +2,8 @@ package tun2 import ( "bufio" + "bytes" "context" - "io" "io/ioutil" "net" "net/http" @@ -127,6 +127,7 @@ func (c *Connection) RoundTrip(req *http.Request) (*http.Response, error) { if err != nil { return nil, errors.Wrap(err, ErrCantOpenSessionStream.Error()) } + defer stream.Close() err = req.Write(stream) if err != nil { @@ -146,17 +147,8 @@ func (c *Connection) RoundTrip(req *http.Request) (*http.Response, error) { return nil, errors.Wrap(err, "can't read response body") } - resp.Body = &mixedReadCloser{ - Reader: buf, - Closer: stream, - } - + resp.Body = ioutil.NopCloser(bytes.NewBuffer(body)) resp.ContentLength = int64(len(body)) return resp, nil } - -type mixedReadCloser struct { - io.Reader - io.Closer -}