From 2fdb6bbdd5d374d2aaa78b5bd64163726ff10a75 Mon Sep 17 00:00:00 2001 From: Jean-Louis Huynen Date: Wed, 17 Feb 2021 16:15:54 +0100 Subject: [PATCH] add: [filerwatcher] fix max buffer length bug --- inputreader/filewatcherreader.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/inputreader/filewatcherreader.go b/inputreader/filewatcherreader.go index 4fd0aa4..6c7ddfb 100644 --- a/inputreader/filewatcherreader.go +++ b/inputreader/filewatcherreader.go @@ -94,26 +94,27 @@ func (fw *FileWatcherReader) Read(p []byte) (n int, err error) { // base64 stream encoder b64buffer := new(bytes.Buffer) b64encoder := base64.NewEncoder(base64.StdEncoding, b64buffer) - // Read the file using p's length to get he correct size automatically - buf := make([]byte, len(p)) - n, err = fw.curfile.Read(buf) + // max buffer size is then 3072 = 4096/4*3 + buf := make([]byte, 3072) + bytesread, err := fw.curfile.Read(buf) // buf is the input - b64encoder.Write(buf) + b64encoder.Write(buf[:bytesread]) // Close the encoder to flush partially written blocks b64encoder.Close() + log.Println(b64buffer) if err == io.EOF { fw.insertsep = true } // Copy from b64buffer to p - n, err = b64buffer.Read(p) - // I keep a len(p) buffer size as python knows how to handle the padding + n, err = b64buffer.Read(p[:len(b64buffer.Bytes())]) + log.Println("len b64 buffer: ", len(b64buffer.Bytes())) } else { n, err = fw.curfile.Read(p) if err == io.EOF { fw.insertsep = true } } - //log.Println("nread: ", n) + log.Println("nread: ", n) return n, err }