From 4b85a173e866a667208fea1bf9ebfc599ad8b66a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 29 Sep 2026 20:35:18 +0200 Subject: [PATCH] Drop the redundant complete-block short circuit from FEC recovery A block with every data shard present passes through the code as a no-op and yields no recovered records, so the early return in both recovery functions did nothing the code did not already do. Mutation showed both survive removal. The audio payload-length rule is now pinned by its message, since the codec's own shard-size error would otherwise mask its removal. Co-Authored-By: Claude Opus 5.5 --- packages/cultnet-rs/src/media_fec.rs | 6 ------ packages/cultnet-rs/tests/media_fec.rs | 3 ++- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/cultnet-rs/src/media_fec.rs b/packages/cultnet-rs/src/media_fec.rs index 29f35e8c..a2752514 100644 --- a/packages/cultnet-rs/src/media_fec.rs +++ b/packages/cultnet-rs/src/media_fec.rs @@ -450,9 +450,6 @@ pub fn recover_video_block( } let missing: Vec = (0..k).filter(|&slot| shards[slot].is_none()).collect(); - if missing.is_empty() { - return Ok(Vec::new()); - } let recovered = recover_data_shards(k, shards)?; Ok(missing .into_iter() @@ -617,9 +614,6 @@ pub fn recover_audio_block( } let missing: Vec = (0..k).filter(|&slot| shards[slot].is_none()).collect(); - if missing.is_empty() { - return Ok(Vec::new()); - } let recovered = recover_data_shards(k, shards)?; Ok(missing .into_iter() diff --git a/packages/cultnet-rs/tests/media_fec.rs b/packages/cultnet-rs/tests/media_fec.rs index b8ac75c3..e89e58ca 100644 --- a/packages/cultnet-rs/tests/media_fec.rs +++ b/packages/cultnet-rs/tests/media_fec.rs @@ -592,7 +592,8 @@ fn an_audio_block_is_four_contiguous_equal_length_packets() { assert!(protect_audio_block(&packets, &STANDARD).is_err(), "a gap in presentation time"); let mut packets = audio_block(1, 20); packets[3].payload.push(0); - assert!(protect_audio_block(&packets, &STANDARD).is_err(), "unequal payload lengths"); + let error = protect_audio_block(&packets, &STANDARD).unwrap_err(); + assert!(error.to_string().contains("payload length"), "unequal payload lengths: {error}"); let mut packets = audio_block(1, 20); packets[0].codec = "pcm".to_string(); assert!(protect_audio_block(&packets, &STANDARD).is_err(), "mixed codecs");