From 223b816f888ee29d079085396f9710b3f39bcc96 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Sun, 1 Oct 2017 22:52:22 -0700 Subject: [PATCH] internal/tun2: forward stream buffered reader and closer to response bodies --- internal/tun2/connection.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/tun2/connection.go b/internal/tun2/connection.go index 9db2195..20f05dc 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,7 +127,6 @@ 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 { @@ -147,8 +146,17 @@ func (c *Connection) RoundTrip(req *http.Request) (*http.Response, error) { return nil, errors.Wrap(err, "can't read response body") } - resp.Body = ioutil.NopCloser(bytes.NewBuffer(body)) + resp.Body = &mixedReadCloser{ + Reader: buf, + Closer: stream, + } + resp.ContentLength = int64(len(body)) return resp, nil } + +type mixedReadCloser struct { + io.Reader + io.Closer +}