From 5cf84efccd4030c5bdab2609a131d4aa957358b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Wed, 14 Dec 2022 15:26:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=86=85=E5=AE=B9=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/caches/reader_file.go | 10 ++++++++++ internal/caches/storage_file.go | 9 ++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) 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 })