From 532e1ac46beee6b254ade1aa4c1c4dcfea9f5c17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Mon, 16 Oct 2023 12:26:39 +0200 Subject: [PATCH] Fix lapsus with envoyx json decoder The decoder's reset didn't reset because we used an incorrect reader and didn't reload the JSON decoder. --- server/pkg/envoyx/json/decoder.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/server/pkg/envoyx/json/decoder.go b/server/pkg/envoyx/json/decoder.go index 1ccdfaba56..344c567376 100644 --- a/server/pkg/envoyx/json/decoder.go +++ b/server/pkg/envoyx/json/decoder.go @@ -55,13 +55,13 @@ func Decoder(r io.Reader, ident string) (out *decoder, err error) { return } - r, err = out.flushTemp(r) + err = out.flushTemp(r) defer out.src.Seek(0, 0) if err != nil { return } - out.reader = json.NewDecoder(r) + out.reader = json.NewDecoder(out.src) seenHeader := make(map[string]bool) @@ -113,7 +113,12 @@ func (d *decoder) Fields() []string { // Reset resets the decoder to the start func (d *decoder) Reset(_ context.Context) error { _, err := d.src.Seek(0, 0) - return err + if err != nil { + return err + } + + d.reader = json.NewDecoder(d.src) + return nil } // Next returns the field: value mapping for the next row @@ -140,12 +145,12 @@ func (d *decoder) Count() uint64 { return d.count } -func (d *decoder) flushTemp(r io.Reader) (_ io.Reader, err error) { +func (d *decoder) flushTemp(r io.Reader) (err error) { _, err = io.Copy(d.src, r) if err != nil { return } d.src.Seek(0, 0) - return d.src, nil + return nil }