Files
freemkv-keysources/docs/multi-source-failure-collapse.md
T
Matthew Jackson 599422ef22 release: 1.7.0
CI/lint hardening since v1.6.14: clippy on stable with the MSRV single-sourced
from Cargo.toml, cargo-deny dependency-audit gate with first-party git sources
allowed (#15), and audience-based comment-guard (#17). No library code changes.
2026-09-02 12:27:48 -07:00

839 B

MultiSource: a source that could not answer is not a source that said no

MultiSource used to re-collapse the Ok/Err distinction OnlineSource was engineered to draw: if let Ok(uks) = s.get_unit_keys(ctx) discarded every Err, so a composition whose sources ALL failed returned Ok(Vec::new()) — which the resolver reports as E7022 No key source has a decryption key for this disc. That is the seven-hour-502 incident reproduced one layer up.

The regression test multi_source_reports_a_source_failure_instead_of_a_clean_no_key is THE regression check, one layer up from interpret_reply: when no source holds a key AND a source could not answer, the composition must report the FAILURE, never a clean "no key". It catches the mutation that restores if let Ok(uks) = .. (which drops the Err and returns Ok(empty)).