mirror of
https://github.com/freemkv/freemkv-keysources.git
synced 2026-10-07 18:13:11 +00:00
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.
14 lines
839 B
Markdown
14 lines
839 B
Markdown
# `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)`).
|