mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-01 17:58:22 +00:00
655f6ae452
* fix(s3): harden Snowball extract error boundaries * fix(s3): close Snowball extract compatibility gaps * fix(s3): verify Snowball request body completion * test(s3): reject forged Snowball streaming signatures * build(deps): pin Snowball archive parser limits * fix(s3): preserve Snowball trailer and member errors * docs(architecture): register Snowball tar fork cleanup * refactor(s3): route Snowball errors through object boundary * ci(deps): allow pinned tokio-tar source * fix: align Snowball archive codec detection * fix(s3): harden Snowball codec compatibility * fix(s3): preserve Snowball codec compatibility * test(zip): align yield wake assertion with Tokio * fix(rio): preserve legacy large-block reads * fix(zip): accept blank tar numeric fields
RustFS Zip - Archive Format Detection And Stream Decoding
Archive format detection and async stream decoders for RustFS object storage
📖 Documentation
· 🐛 Bug Reports
· 💬 Discussions
📖 Overview
RustFS Zip provides the archive primitives used by the RustFS archive extract flow:
- identify a compression format from an archive extension
- wrap an async reader in the matching stream decoder
- carry the shared default archive guardrails
Current Features
CompressionFormat::from_extension()for extension-based format detection, including tar-family suffixes such astgz,tbz2,txz, andtzstCompressionFormat::get_decoder()for async stream decoding ofgzip,bzip2,zlib,xz, andzstd, plus a pass-through reader for plaintarArchiveLimitswith the default entry count, entry size, total unpacked size, and path length guardrails
Current Boundaries
- ZIP has no stream decoder:
get_decoder()rejectsCompressionFormat::Zip, because ZIP needs central-directory semantics that a forward-only stream cannot provide - This crate detects formats and hands back decoders; archive iteration, entry writing, and extraction to disk belong to the caller
ArchiveLimitscarries the values only; enforcement and the resulting protocol error belong to the caller- Archive extraction safety policy remains the responsibility of the RustFS caller for object-store flows
📚 Documentation
For comprehensive documentation, examples, and usage guides, please visit the main RustFS repository.
📄 License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
