@@ -721,24 +721,24 @@ impl S3Client {
721721 // If SSE-C is used, we must include the encryption headers in every upload request.
722722 request = request. with_encryption_headers ( ) ;
723723 }
724+
724725 let ( parts, body) = request. send ( ) . await ?. into_parts ( ) ;
725- let checksum_sha256 = parts
726- . headers
727- . get ( SHA256_CHECKSUM )
728- . and_then ( |v| v. to_str ( ) . ok ( ) )
729- . map ( |v| v. to_string ( ) ) ;
730-
731- let e_tag = match is_copy {
732- false => get_etag ( & parts. headers ) . map_err ( |source| Error :: Metadata { source } ) ?,
733- true => {
734- let response = body
735- . bytes ( )
736- . await
737- . map_err ( |source| Error :: CreateMultipartResponseBody { source } ) ?;
738- let response: CopyPartResult = quick_xml:: de:: from_reader ( response. reader ( ) )
739- . map_err ( |source| Error :: InvalidMultipartResponse { source } ) ?;
740- response. e_tag
741- }
726+ let ( e_tag, checksum_sha256) = if is_copy {
727+ let response = body
728+ . bytes ( )
729+ . await
730+ . map_err ( |source| Error :: CreateMultipartResponseBody { source } ) ?;
731+ let response: CopyPartResult = quick_xml:: de:: from_reader ( response. reader ( ) )
732+ . map_err ( |source| Error :: InvalidMultipartResponse { source } ) ?;
733+ ( response. e_tag , response. checksum_sha256 )
734+ } else {
735+ let e_tag = get_etag ( & parts. headers ) . map_err ( |source| Error :: Metadata { source } ) ?;
736+ let checksum_sha256 = parts
737+ . headers
738+ . get ( SHA256_CHECKSUM )
739+ . and_then ( |v| v. to_str ( ) . ok ( ) )
740+ . map ( |v| v. to_string ( ) ) ;
741+ ( e_tag, checksum_sha256)
742742 } ;
743743
744744 let content_id = if self . config . checksum == Some ( Checksum :: SHA256 ) {
0 commit comments