mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-21 11:56:38 +00:00
fix(rio): preserve reader capabilities and crypto safety (#2363)
This commit is contained in:
@@ -56,7 +56,7 @@ use axum::http::HeaderMap;
|
||||
use rustfs_credentials::Credentials;
|
||||
use rustfs_ecstore::new_object_layer_fn;
|
||||
use rustfs_ecstore::store_api::{BucketOperations, BucketOptions, ObjectIO, ObjectOperations, ObjectOptions, PutObjReader};
|
||||
use rustfs_rio::{HashReader, Reader, WarpReader};
|
||||
use rustfs_rio::HashReader;
|
||||
use std::collections::HashMap;
|
||||
use tracing::debug;
|
||||
use tracing::error;
|
||||
@@ -374,20 +374,12 @@ where
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
// 13. Wrap reader in buffered reader then WarpReader (Box<dyn Reader>)
|
||||
// 13. Wrap reader in buffered reader for streaming hash validation
|
||||
let buf_reader = tokio::io::BufReader::new(reader);
|
||||
let warp_reader: Box<dyn Reader> = Box::new(WarpReader::new(buf_reader));
|
||||
|
||||
// 14. Create HashReader (no MD5/SHA256 validation for Swift)
|
||||
let hash_reader = HashReader::new(
|
||||
warp_reader,
|
||||
content_length,
|
||||
content_length,
|
||||
None, // md5hex
|
||||
None, // sha256hex
|
||||
false, // disable_multipart
|
||||
)
|
||||
.map_err(|e| sanitize_storage_error("Hash reader creation", e))?;
|
||||
let hash_reader = HashReader::from_stream(buf_reader, content_length, content_length, None, None, false)
|
||||
.map_err(|e| sanitize_storage_error("Hash reader creation", e))?;
|
||||
|
||||
// 15. Wrap in PutObjReader as expected by storage layer
|
||||
let mut put_reader = PutObjReader::new(hash_reader);
|
||||
@@ -465,20 +457,12 @@ where
|
||||
// Content length (use -1 for unknown)
|
||||
let content_length = -1i64;
|
||||
|
||||
// Wrap reader in buffered reader then WarpReader
|
||||
// Wrap reader in buffered reader for streaming hash validation
|
||||
let buf_reader = tokio::io::BufReader::new(reader);
|
||||
let warp_reader: Box<dyn Reader> = Box::new(WarpReader::new(buf_reader));
|
||||
|
||||
// Create HashReader
|
||||
let hash_reader = HashReader::new(
|
||||
warp_reader,
|
||||
content_length,
|
||||
content_length,
|
||||
None, // md5hex
|
||||
None, // sha256hex
|
||||
false, // disable_multipart
|
||||
)
|
||||
.map_err(|e| sanitize_storage_error("Hash reader creation", e))?;
|
||||
let hash_reader = HashReader::from_stream(buf_reader, content_length, content_length, None, None, false)
|
||||
.map_err(|e| sanitize_storage_error("Hash reader creation", e))?;
|
||||
|
||||
// Wrap in PutObjReader
|
||||
let mut put_reader = PutObjReader::new(hash_reader);
|
||||
|
||||
Reference in New Issue
Block a user