Skip to content

Commit 6358be6

Browse files
extend more missing headers for PartUploads (#2132)
1 parent bab3180 commit 6358be6

File tree

5 files changed

+32
-12
lines changed

5 files changed

+32
-12
lines changed

.github/workflows/go.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
ACCESS_KEY: minioadmin
3737
SECRET_KEY: minioadmin
3838
ENABLE_HTTPS: 1
39-
MINIO_KMS_MASTER_KEY: my-minio-key:6368616e676520746869732070617373776f726420746f206120736563726574
39+
MINIO_KMS_SECRET_KEY: my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw=
4040
SSL_CERT_FILE: /tmp/certs-dir/public.crt
4141
MINIO_CI_CD: true
4242
MINT_NO_FULL_OBJECT: true

api-put-object-multipart.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,10 @@ func (c *Client) putObjectMultipartNoStream(ctx context.Context, bucketName, obj
146146
crc.Write(buf[:length])
147147
cSum := crc.Sum(nil)
148148
customHeader.Set(opts.AutoChecksum.Key(), base64.StdEncoding.EncodeToString(cSum))
149+
customHeader.Set(amzChecksumAlgo, opts.AutoChecksum.String())
150+
if opts.AutoChecksum.FullObjectRequested() {
151+
customHeader.Set(amzChecksumMode, ChecksumFullObjectMode.String())
152+
}
149153
}
150154

151155
p := uploadPartParams{bucketName: bucketName, objectName: objectName, uploadID: uploadID, reader: rd, partNumber: partNumber, md5Base64: md5Base64, sha256Hex: sha256Hex, size: int64(length), sse: opts.ServerSideEncryption, streamSha256: !opts.DisableContentSha256, customHeader: customHeader}

api-put-object-streaming.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,10 @@ func (c *Client) putObjectMultipartStreamOptionalChecksum(ctx context.Context, b
363363
crc.Write(buf[:length])
364364
cSum := crc.Sum(nil)
365365
customHeader.Set(opts.AutoChecksum.Key(), base64.StdEncoding.EncodeToString(cSum))
366+
customHeader.Set(amzChecksumAlgo, opts.AutoChecksum.String())
367+
if opts.AutoChecksum.FullObjectRequested() {
368+
customHeader.Set(amzChecksumMode, ChecksumFullObjectMode.String())
369+
}
366370
}
367371

368372
// Update progress reader appropriately to the latest offset
@@ -521,18 +525,22 @@ func (c *Client) putObjectMultipartStreamParallel(ctx context.Context, bucketNam
521525
return UploadInfo{}, rerr
522526
}
523527

524-
// Calculate md5sum.
525-
customHeader := make(http.Header)
526-
if opts.AutoChecksum.IsSet() {
527-
// Add Checksum instead.
528-
crc.Reset()
529-
crc.Write(buf[:length])
530-
cSum := crc.Sum(nil)
531-
customHeader.Set(opts.AutoChecksum.Key(), base64.StdEncoding.EncodeToString(cSum))
532-
}
533-
534528
wg.Add(1)
535529
go func(partNumber int) {
530+
// Calculate md5sum.
531+
customHeader := make(http.Header)
532+
if opts.AutoChecksum.IsSet() {
533+
// Add Checksum instead.
534+
crc.Reset()
535+
crc.Write(buf[:length])
536+
cSum := crc.Sum(nil)
537+
customHeader.Set(opts.AutoChecksum.Key(), base64.StdEncoding.EncodeToString(cSum))
538+
customHeader.Set(amzChecksumAlgo, opts.AutoChecksum.String())
539+
if opts.AutoChecksum.FullObjectRequested() {
540+
customHeader.Set(amzChecksumMode, ChecksumFullObjectMode.String())
541+
}
542+
}
543+
536544
// Avoid declaring variables in the for loop
537545
var md5Base64 string
538546

api-put-object.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ func (c *Client) PutObject(ctx context.Context, bucketName, objectName string, r
340340
}
341341

342342
if c.trailingHeaderSupport {
343-
opts.AutoChecksum.SetDefault(ChecksumFullObjectCRC32C)
343+
opts.AutoChecksum.SetDefault(ChecksumCRC32C)
344344
addAutoChecksumHeaders(&opts)
345345
}
346346

@@ -450,6 +450,10 @@ func (c *Client) putObjectMultipartStreamNoLength(ctx context.Context, bucketNam
450450
crc.Write(buf[:length])
451451
cSum := crc.Sum(nil)
452452
customHeader.Set(opts.AutoChecksum.Key(), base64.StdEncoding.EncodeToString(cSum))
453+
customHeader.Set(amzChecksumAlgo, opts.AutoChecksum.String())
454+
if opts.AutoChecksum.FullObjectRequested() {
455+
customHeader.Set(amzChecksumMode, ChecksumFullObjectMode.String())
456+
}
453457
}
454458

455459
// Update progress reader appropriately to the latest offset

functional_tests.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2637,6 +2637,7 @@ func testTrailingChecksums() {
26372637
DisableMultipart: false,
26382638
UserMetadata: nil,
26392639
PartSize: 5 << 20,
2640+
Checksum: minio.ChecksumFullObjectCRC32C,
26402641
},
26412642
},
26422643
{
@@ -2648,6 +2649,7 @@ func testTrailingChecksums() {
26482649
DisableMultipart: false,
26492650
UserMetadata: nil,
26502651
PartSize: 6_645_654, // Rather arbitrary size
2652+
Checksum: minio.ChecksumFullObjectCRC32C,
26512653
},
26522654
},
26532655
{
@@ -2659,6 +2661,7 @@ func testTrailingChecksums() {
26592661
DisableMultipart: false,
26602662
UserMetadata: nil,
26612663
PartSize: 5 << 20,
2664+
Checksum: minio.ChecksumFullObjectCRC32C,
26622665
},
26632666
},
26642667
{
@@ -2670,6 +2673,7 @@ func testTrailingChecksums() {
26702673
DisableMultipart: false,
26712674
UserMetadata: nil,
26722675
PartSize: 6_645_654, // Rather arbitrary size
2676+
Checksum: minio.ChecksumFullObjectCRC32C,
26732677
},
26742678
},
26752679
}

0 commit comments

Comments
 (0)