Explicitly Close() obj after ReadFull()

Signed-off-by: Ben Agricola <bagricola@squiz.co.uk>
This commit is contained in:
Ben Agricola 2016-07-29 13:23:52 +01:00
parent e1960cadb2
commit edb1843f24
1 changed files with 11 additions and 1 deletions

View File

@ -97,7 +97,17 @@ func (be s3) Load(h backend.Handle, p []byte, off int64) (int, error) {
defer func() {
be.connChan <- struct{}{}
}()
return io.ReadFull(obj, p)
// This may not read the whole object, so ensure object
// is closed to avoid duplicate connections.
n, err := io.ReadFull(obj, p)
if err != nil {
obj.Close()
} else {
err = obj.Close()
}
return n, err
}
// Save stores data in the backend at the handle.