From 26c16b9fd39ac6512d926670a36320c88571aad8 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 14 May 2017 00:09:59 +0200 Subject: [PATCH] s3: Correctly return token in Load --- src/restic/backend/s3/s3.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/restic/backend/s3/s3.go b/src/restic/backend/s3/s3.go index 174146040..56cf71249 100644 --- a/src/restic/backend/s3/s3.go +++ b/src/restic/backend/s3/s3.go @@ -212,11 +212,22 @@ func (be *s3) Load(h restic.Handle, length int, offset int64) (io.ReadCloser, er coreClient := minio.Core{be.client} rd, _, err := coreClient.GetObject(be.bucketname, objName, headers) + if err != nil { + // return token + be.connChan <- struct{}{} + return nil, err + } - // return token - be.connChan <- struct{}{} + closeRd := wrapReader{ + ReadCloser: rd, + f: func() { + debug.Log("Close()") + // return token + be.connChan <- struct{}{} + }, + } - return rd, err + return closeRd, err } // Stat returns information about a blob.