Skip to content

Commit 88f7c73

Browse files
authored
Only calculate full body checksum for checksums that support it (#3835)
1 parent d3474a1 commit 88f7c73

1 file changed

Lines changed: 12 additions & 8 deletions

File tree

src/aws-cpp-sdk-transfer/source/transfer/TransferManager.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -407,18 +407,18 @@ namespace Aws
407407
bool isRetry = !handle->GetMultiPartId().empty();
408408
uint64_t sentBytes = 0;
409409

410-
const auto fullObjectHashCalculator = [](const std::shared_ptr<TransferHandle>& handle, bool isRetry, S3::Model::ChecksumAlgorithm algorithm) -> std::shared_ptr<Aws::Utils::Crypto::Hash> {
410+
const auto fullObjectHashCalculator = [](const std::shared_ptr<TransferHandle>& handle, bool isRetry,
411+
S3::Model::ChecksumAlgorithm algorithm) -> std::shared_ptr<Aws::Utils::Crypto::Hash> {
411412
if (handle->GetChecksum().empty() && !isRetry) {
412-
if (algorithm == S3::Model::ChecksumAlgorithm::CRC32 || algorithm == S3::Model::ChecksumAlgorithm::CRC32C) {
413-
return Aws::MakeShared<Aws::Utils::Crypto::CRC32>("TransferManager");
413+
if (algorithm == S3::Model::ChecksumAlgorithm::CRC64NVME) {
414+
return Aws::MakeShared<Aws::Utils::Crypto::CRC64>("TransferManager");
414415
}
415-
if (algorithm == S3::Model::ChecksumAlgorithm::SHA1) {
416-
return Aws::MakeShared<Aws::Utils::Crypto::Sha1>("TransferManager");
416+
if (algorithm == S3::Model::ChecksumAlgorithm::CRC32) {
417+
return Aws::MakeShared<Aws::Utils::Crypto::CRC32>("TransferManager");
417418
}
418-
if (algorithm == S3::Model::ChecksumAlgorithm::SHA256) {
419-
return Aws::MakeShared<Aws::Utils::Crypto::Sha256>("TransferManager");
419+
if (algorithm == S3::Model::ChecksumAlgorithm::CRC32C) {
420+
return Aws::MakeShared<Aws::Utils::Crypto::CRC32C>("TransferManager");
420421
}
421-
return Aws::MakeShared<Aws::Utils::Crypto::CRC64>("TransferManager");
422422
}
423423
return nullptr;
424424
}(handle, isRetry, m_transferConfig.checksumAlgorithm);
@@ -432,6 +432,10 @@ namespace Aws
432432
createMultipartRequest.SetKey(handle->GetKey());
433433
createMultipartRequest.SetMetadata(handle->GetMetadata());
434434

435+
if (fullObjectHashCalculator) {
436+
createMultipartRequest.SetChecksumType(Aws::S3::Model::ChecksumType::FULL_OBJECT);
437+
}
438+
435439
auto createMultipartResponse = m_transferConfig.s3Client->CreateMultipartUpload(createMultipartRequest);
436440
if (createMultipartResponse.IsSuccess()) {
437441
handle->SetMultipartId(createMultipartResponse.GetResult().GetUploadId());

0 commit comments

Comments
 (0)