mirror of
https://github.com/freemkv/libfreemkv.git
synced 2026-10-07 18:13:10 +00:00
raw_command clamped CDBs with cdb.len().min(16) instead of routing through the shared checked_cdb_len guard, so an over-length or empty CDB became a different command rather than a rejected one; it now returns the crate Result so a rejected CDB is distinguishable from an I/O failure. The recovery/Drop fd hand-off lacked a release edge: the teardown swap was not a release op and the recovery CAS was not an acquire load, so a recovery thread publishing its fd after Drop drained the slot could miss dead==true and leak the descriptor. Both sides are now AcqRel, with the execute() drain left at Acquire (sound via the release-sequence rule). A loom model (cfg(loom) dev-dep, its own CI job) provides the regression coverage cargo test cannot. Module docs for fd_handoff and timeline now resolve in their own scope, and item docs stay within comment-guard's caps. Fixes #16.