diff --git a/internal/caches/reader_file.go b/internal/caches/reader_file.go index 4596301..29d987f 100644 --- a/internal/caches/reader_file.go +++ b/internal/caches/reader_file.go @@ -215,6 +215,10 @@ func (this *FileReader) ReadHeader(buf []byte, callback ReaderFunc) error { } func (this *FileReader) ReadBody(buf []byte, callback ReaderFunc) error { + if this.bodySize == 0 { + return nil + } + var isOk = false defer func() { @@ -257,6 +261,12 @@ func (this *FileReader) ReadBody(buf []byte, callback ReaderFunc) error { } func (this *FileReader) Read(buf []byte) (n int, err error) { + if this.bodySize == 0 { + n = 0 + err = io.EOF + return + } + n, err = this.fp.Read(buf) if err != nil && err != io.EOF { _ = this.discard() diff --git a/internal/caches/storage_file.go b/internal/caches/storage_file.go index 539872a..fa00731 100644 --- a/internal/caches/storage_file.go +++ b/internal/caches/storage_file.go @@ -1213,9 +1213,12 @@ func (this *FileStorage) hotLoop() { } err = reader.ReadBody(buf, func(n int) (goNext bool, err error) { - _, err = writer.Write(buf[:n]) - if err == nil { - goNext = true + goNext = true + if n > 0 { + _, err = writer.Write(buf[:n]) + if err != nil { + goNext = false + } } return })