diff options
author | Alex Auvolat <lx@deuxfleurs.fr> | 2025-02-18 18:57:50 +0100 |
---|---|---|
committer | Alex Auvolat <lx@deuxfleurs.fr> | 2025-02-18 21:47:53 +0100 |
commit | f6e805e7db7b35e9fc6baaad6ec953e30a443437 (patch) | |
tree | 904b5b61d02deb24c20b37c993b080c335d155c5 /src/api/s3/put.rs | |
parent | 45e10e55f9761d79aa8d5b7dbaeb56d4d535629e (diff) | |
download | garage-f6e805e7db7b35e9fc6baaad6ec953e30a443437.tar.gz garage-f6e805e7db7b35e9fc6baaad6ec953e30a443437.zip |
api: various fixes
Diffstat (limited to 'src/api/s3/put.rs')
-rw-r--r-- | src/api/s3/put.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/api/s3/put.rs b/src/api/s3/put.rs index 6fcf33cb..496d80f3 100644 --- a/src/api/s3/put.rs +++ b/src/api/s3/put.rs @@ -79,9 +79,14 @@ pub async fn handle_put( // Determine whether object should be encrypted, and if so the key let encryption = EncryptionParams::new_from_headers(&ctx.garage, req.headers())?; + // The request body is a special ReqBody object (see garage_api_common::signature::body) + // which supports calculating checksums while streaming the data. + // Before we start streaming, we configure it to calculate all the checksums we need. let mut req_body = req.into_body(); req_body.add_expected_checksums(expected_checksums.clone()); if !encryption.is_encrypted() { + // For non-encrypted objects, we need to compute the md5sum in all cases + // (even if content-md5 is not set), because it is used as the object etag req_body.add_md5(); } |