diff --git a/crates/ecstore/src/store_api/readers.rs b/crates/ecstore/src/store_api/readers.rs index 01f3bbb65..461e8ff7e 100644 --- a/crates/ecstore/src/store_api/readers.rs +++ b/crates/ecstore/src/store_api/readers.rs @@ -63,34 +63,31 @@ impl GetObjectReader { rs = HTTPRangeSpec::from_object_info(oi, part_number); } - let logical_size = oi.get_actual_size()?; - let encrypted_object = oi.user_defined.contains_key("x-rustfs-encryption-key") - || oi - .user_defined - .contains_key("x-amz-server-side-encryption-customer-algorithm"); + // TODO:Encrypted let (algo, is_compressed) = oi.is_compressed_ok()?; // TODO: check TRANSITION if is_compressed { + let actual_size = oi.get_actual_size()?; let (off, length, dec_off, dec_length) = if let Some(rs) = rs { // Support range requests for compressed objects - let (dec_off, dec_length) = rs.get_offset_length(logical_size)?; + let (dec_off, dec_length) = rs.get_offset_length(actual_size)?; (0, oi.size, dec_off, dec_length) } else { - (0, oi.size, 0, logical_size) + (0, oi.size, 0, actual_size) }; let dec_reader = DecompressReader::new(reader, algo); - let actual_size_usize = if logical_size > 0 { - logical_size as usize + let actual_size_usize = if actual_size > 0 { + actual_size as usize } else { - return Err(Error::other(format!("invalid decompressed size {logical_size}"))); + return Err(Error::other(format!("invalid decompressed size {actual_size}"))); }; - let final_reader: Box = if dec_off > 0 || dec_length != logical_size { + let final_reader: Box = if dec_off > 0 || dec_length != actual_size { // Use RangedDecompressReader for streaming range processing // The new implementation supports any offset size by streaming and skipping data match RangedDecompressReader::new(dec_reader, dec_off, dec_length, actual_size_usize) { @@ -125,19 +122,8 @@ impl GetObjectReader { )); } - if encrypted_object && rs.is_none() { - return Ok(( - GetObjectReader { - stream: reader, - object_info: oi.clone(), - }, - 0, - oi.size, - )); - } - if let Some(rs) = rs { - let (off, length) = rs.get_offset_length(logical_size)?; + let (off, length) = rs.get_offset_length(oi.size)?; Ok(( GetObjectReader { @@ -154,7 +140,7 @@ impl GetObjectReader { object_info: oi.clone(), }, 0, - logical_size, + oi.size, )) } }