operations: if --ignore-checksum is in effect, don't calculate checksum

Before this change we calculated the checksum which is potentially
time consuming and then ignored the result.  After the change we don't
calculate the checksum if we are about to ignore it.
This commit is contained in:
Nick Craig-Wood 2019-05-11 22:27:24 +01:00
parent c3af0a1eca
commit 687cbf3ded

View File

@ -356,9 +356,7 @@ func Copy(f fs.Fs, dst fs.Object, remote string, src fs.Object) (newDst fs.Objec
} }
// Verify hashes are the same after transfer - ignoring blank hashes // Verify hashes are the same after transfer - ignoring blank hashes
// TODO(klauspost): This could be extended, so we always create a hash type matching if !fs.Config.IgnoreChecksum && hashType != hash.None {
// the destination, and calculate it while sending.
if hashType != hash.None {
var srcSum string var srcSum string
srcSum, err = src.Hash(hashType) srcSum, err = src.Hash(hashType)
if err != nil { if err != nil {
@ -370,7 +368,7 @@ func Copy(f fs.Fs, dst fs.Object, remote string, src fs.Object) (newDst fs.Objec
if err != nil { if err != nil {
fs.CountError(err) fs.CountError(err)
fs.Errorf(dst, "Failed to read hash: %v", err) fs.Errorf(dst, "Failed to read hash: %v", err)
} else if !fs.Config.IgnoreChecksum && !hash.Equals(srcSum, dstSum) { } else if !hash.Equals(srcSum, dstSum) {
err = errors.Errorf("corrupted on transfer: %v hash differ %q vs %q", hashType, srcSum, dstSum) err = errors.Errorf("corrupted on transfer: %v hash differ %q vs %q", hashType, srcSum, dstSum)
fs.Errorf(dst, "%v", err) fs.Errorf(dst, "%v", err)
fs.CountError(err) fs.CountError(err)