diff --git a/client/fs_endpoint.go b/client/fs_endpoint.go index eaff009c7..9349b184b 100644 --- a/client/fs_endpoint.go +++ b/client/fs_endpoint.go @@ -294,6 +294,7 @@ OUTER: streamErr = err break OUTER } + encoder.Reset(conn) case <-ctx.Done(): break OUTER } @@ -405,8 +406,6 @@ func (f *FileSystem) logs(conn io.ReadWriteCloser) { frames := make(chan *sframer.StreamFrame, streamFramesBuffer) errCh := make(chan error) - var buf bytes.Buffer - frameCodec := codec.NewEncoder(&buf, structs.JsonHandle) // Start streaming go func() { @@ -437,6 +436,8 @@ func (f *FileSystem) logs(conn io.ReadWriteCloser) { }() var streamErr error + buf := new(bytes.Buffer) + frameCodec := codec.NewEncoder(buf, structs.JsonHandle) OUTER: for { select { @@ -455,6 +456,7 @@ OUTER: streamErr = err break OUTER } + frameCodec.Reset(buf) resp.Payload = buf.Bytes() buf.Reset() @@ -464,6 +466,7 @@ OUTER: streamErr = err break OUTER } + encoder.Reset(conn) } } diff --git a/command/agent/fs_endpoint.go b/command/agent/fs_endpoint.go index c19684c89..0f5f29c27 100644 --- a/command/agent/fs_endpoint.go +++ b/command/agent/fs_endpoint.go @@ -361,6 +361,7 @@ func (s *HTTPServer) fsStreamImpl(resp http.ResponseWriter, cancel() return } + encoder.Reset(httpPipe) for { select { @@ -377,6 +378,7 @@ func (s *HTTPServer) fsStreamImpl(resp http.ResponseWriter, cancel() return } + decoder.Reset(httpPipe) if err := res.Error; err != nil { if err.Code != nil {