From d48e4ac5775e323e77f778e8f72f69126da881cd Mon Sep 17 00:00:00 2001 From: Marius Date: Thu, 23 Mar 2017 12:06:15 +0100 Subject: [PATCH] Correct when S3Store write loop is ended --- s3store/s3store.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/s3store/s3store.go b/s3store/s3store.go index 2f4c269..90c6ed6 100644 --- a/s3store/s3store.go +++ b/s3store/s3store.go @@ -248,9 +248,14 @@ func (store S3Store) WriteChunk(id string, offset int64, src io.Reader) (int64, limitedReader := io.LimitReader(src, store.MaxPartSize) n, err := io.Copy(file, limitedReader) - if err != nil && err != io.EOF { + // io.Copy does not return io.EOF, so we not have to handle it differently. + if err != nil { return bytesUploaded, err } + // If io.Copy is finished reading, it will always return (0, nil). + if n == 0 { + return bytesUploaded, nil + } if (size - offset) <= store.MinPartSize { if (size - offset) != n { @@ -274,7 +279,7 @@ func (store S3Store) WriteChunk(id string, offset int64, src io.Reader) (int64, return bytesUploaded, err } - offset += bytesUploaded + offset += n bytesUploaded += n nextPartNum += 1 }