v0.2.3
Fixed
- Large file downloads failing at ~400MB: the reqwest HTTP client was configured with
.timeout()which sets a total request deadline (default 60s), not a per-read idle timeout — downloads taking longer than 60 seconds would be killed mid-stream; switched to.read_timeout()which resets after each successful read - Segment failures killing entire download: wired the existing
RetryPolicyinto the segmented download path — each segment now retries with exponential backoff and resumes from the byte position already written instead of failing the whole download immediately - Rate limiter silent overflow: speed limits were cast from
u64tou32with truncation; values aboveu32::MAXnow clamp instead of wrapping to zero - SQLite busy errors with concurrent readers: added
busy_timeout(5s)so external tools (GUI, CLI monitors) reading the database don't causeSQLITE_BUSYfailures - Segment persistence not atomic: wrapped
save_segments()DELETE+INSERT in an explicit transaction to prevent corrupt resume data on crash - WebSeed unbounded memory growth: replaced unbounded event channel with a bounded channel (
max_connections * 2capacity) to apply backpressure when the consumer falls behind - WebSeed timeout same as main client: applied the same
.timeout()→.read_timeout()fix to the WebSeed HTTP client
Full Changelog: v0.2.2...v0.2.3