@@ -84,42 +84,49 @@ class ChecksumInterceptor : public smithy::interceptor::Interceptor {
8484 // AwsAuthSigner decide it.
8585 if (request.IsStreaming () && checksumValueAndAlgorithmProvided) {
8686 addChecksumFeatureForChecksumName (checksumAlgorithmName, request);
87- const auto hash = Aws::MakeShared<PrecalculatedHash>(AWS_SMITHY_CLIENT_CHECKSUM, checksumHeader->second );
88- httpRequest->SetRequestHash (checksumAlgorithmName, hash);
87+ if (httpRequest->GetRequestHash ().second == nullptr ) {
88+ const auto hash = Aws::MakeShared<PrecalculatedHash>(AWS_SMITHY_CLIENT_CHECKSUM, checksumHeader->second );
89+ httpRequest->SetRequestHash (checksumAlgorithmName, hash);
90+ }
8991 } else if (checksumValueAndAlgorithmProvided) {
9092 httpRequest->SetHeaderValue (checksumType, checksumHeader->second );
9193 } else if (checksumAlgorithmName == " crc64nvme" ) {
9294 request.AddUserAgentFeature (Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC64);
9395 if (request.IsStreaming ()) {
94- httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<CRC64>(AWS_SMITHY_CLIENT_CHECKSUM));
96+ if (httpRequest->GetRequestHash ().second == nullptr )
97+ httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<CRC64>(AWS_SMITHY_CLIENT_CHECKSUM));
9598 } else {
9699 httpRequest->SetHeaderValue (checksumType, HashingUtils::Base64Encode (HashingUtils::CalculateCRC64 (*(GetBodyStream (request)))));
97100 }
98101 } else if (checksumAlgorithmName == " crc32" ) {
99102 request.AddUserAgentFeature (Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC32);
100103 if (request.IsStreaming ()) {
101- httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<CRC32>(AWS_SMITHY_CLIENT_CHECKSUM));
104+ if (httpRequest->GetRequestHash ().second == nullptr )
105+ httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<CRC32>(AWS_SMITHY_CLIENT_CHECKSUM));
102106 } else {
103107 httpRequest->SetHeaderValue (checksumType, HashingUtils::Base64Encode (HashingUtils::CalculateCRC32 (*(GetBodyStream (request)))));
104108 }
105109 } else if (checksumAlgorithmName == " crc32c" ) {
106110 request.AddUserAgentFeature (Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_CRC32C);
107111 if (request.IsStreaming ()) {
108- httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<CRC32C>(AWS_SMITHY_CLIENT_CHECKSUM));
112+ if (httpRequest->GetRequestHash ().second == nullptr )
113+ httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<CRC32C>(AWS_SMITHY_CLIENT_CHECKSUM));
109114 } else {
110115 httpRequest->SetHeaderValue (checksumType, HashingUtils::Base64Encode (HashingUtils::CalculateCRC32C (*(GetBodyStream (request)))));
111116 }
112117 } else if (checksumAlgorithmName == " sha256" ) {
113118 request.AddUserAgentFeature (Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_SHA256);
114119 if (request.IsStreaming ()) {
115- httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<Sha256>(AWS_SMITHY_CLIENT_CHECKSUM));
120+ if (httpRequest->GetRequestHash ().second == nullptr )
121+ httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<Sha256>(AWS_SMITHY_CLIENT_CHECKSUM));
116122 } else {
117123 httpRequest->SetHeaderValue (checksumType, HashingUtils::Base64Encode (HashingUtils::CalculateSHA256 (*(GetBodyStream (request)))));
118124 }
119125 } else if (checksumAlgorithmName == " sha1" ) {
120126 request.AddUserAgentFeature (Aws::Client::UserAgentFeature::FLEXIBLE_CHECKSUMS_REQ_SHA1);
121127 if (request.IsStreaming ()) {
122- httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<Sha1>(AWS_SMITHY_CLIENT_CHECKSUM));
128+ if (httpRequest->GetRequestHash ().second == nullptr )
129+ httpRequest->SetRequestHash (checksumAlgorithmName, Aws::MakeShared<Sha1>(AWS_SMITHY_CLIENT_CHECKSUM));
123130 } else {
124131 httpRequest->SetHeaderValue (checksumType, HashingUtils::Base64Encode (HashingUtils::CalculateSHA1 (*(GetBodyStream (request)))));
125132 }
0 commit comments