@@ -616,6 +616,18 @@ func (c *Client) executeMethod(ctx context.Context, method string, metadata requ
616
616
}
617
617
}
618
618
619
+ if metadata .addCrc && metadata .contentLength > 0 {
620
+ if metadata .trailer == nil {
621
+ metadata .trailer = make (http.Header , 1 )
622
+ }
623
+ crc := crc32 .New (crc32 .MakeTable (crc32 .Castagnoli ))
624
+ metadata .contentBody = newHashReaderWrapper (metadata .contentBody , crc , func (hash []byte ) {
625
+ // Update trailer when done.
626
+ metadata .trailer .Set ("x-amz-checksum-crc32c" , base64 .StdEncoding .EncodeToString (hash ))
627
+ })
628
+ metadata .trailer .Set ("x-amz-checksum-crc32c" , base64 .StdEncoding .EncodeToString (crc .Sum (nil )))
629
+ }
630
+
619
631
// Create cancel context to control 'newRetryTimer' go routine.
620
632
retryCtx , cancel := context .WithCancel (ctx )
621
633
@@ -635,17 +647,6 @@ func (c *Client) executeMethod(ctx context.Context, method string, metadata requ
635
647
}
636
648
}
637
649
638
- if metadata .addCrc {
639
- if metadata .trailer == nil {
640
- metadata .trailer = make (http.Header , 1 )
641
- }
642
- crc := crc32 .New (crc32 .MakeTable (crc32 .Castagnoli ))
643
- metadata .contentBody = newHashReaderWrapper (metadata .contentBody , crc , func (hash []byte ) {
644
- // Update trailer when done.
645
- metadata .trailer .Set ("x-amz-checksum-crc32c" , base64 .StdEncoding .EncodeToString (hash ))
646
- })
647
- metadata .trailer .Set ("x-amz-checksum-crc32c" , base64 .StdEncoding .EncodeToString (crc .Sum (nil )))
648
- }
649
650
// Instantiate a new request.
650
651
var req * http.Request
651
652
req , err = c .newRequest (ctx , method , metadata )
0 commit comments