From d38caa2661db7512cc52bd2b563c42338dcc601e Mon Sep 17 00:00:00 2001 From: leffss <49055524+leffss@users.noreply.github.com> Date: Tue, 1 Nov 2022 19:07:19 +0800 Subject: [PATCH] Handle MD5 from etag when upper-case are used. Some S3-compatible providers, like AlibabaCloud, return etag in upper-case (e.g. A256A58D6429BF79ABBC0DB3CEF2FC71) --- S3/S3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/S3/S3.py b/S3/S3.py index 584025d3..41792fce 100644 --- a/S3/S3.py +++ b/S3/S3.py @@ -1870,7 +1870,7 @@ def send_file(self, request, stream, labels, buffer = '', throttle = 0, debug("MD5 sums: computed=%s, received=%s" % (md5_computed, response["headers"].get('etag', '').strip('"\''))) ## when using KMS encryption, MD5 etag value will not match md5_from_s3 = response["headers"].get("etag", "").strip('"\'') - if ('-' not in md5_from_s3) and (md5_from_s3 != md5_hash.hexdigest()) and response["headers"].get("x-amz-server-side-encryption") != 'aws:kms': + if ('-' not in md5_from_s3) and (md5_from_s3.lower() != md5_computed.lower()) and response["headers"].get("x-amz-server-side-encryption") != 'aws:kms': warning("MD5 Sums don't match!") if retries: warning("Retrying upload of %s" % (filename))