Improve error messages
This commit is contained in:
parent
70c730a2d3
commit
8f3cd291b0
1 changed files with 14 additions and 5 deletions
|
|
@ -34,23 +34,32 @@ pub struct ChunkTracker {
|
||||||
// E.g. we might have more pieces, but the client asks to download only some files
|
// E.g. we might have more pieces, but the client asks to download only some files
|
||||||
// partially.
|
// partially.
|
||||||
fn compute_chunk_status(lengths: &Lengths, needed_pieces: &BF) -> anyhow::Result<BF> {
|
fn compute_chunk_status(lengths: &Lengths, needed_pieces: &BF) -> anyhow::Result<BF> {
|
||||||
|
if needed_pieces.len() != lengths.total_pieces() as usize {
|
||||||
|
anyhow::bail!(
|
||||||
|
"bug: needed_pieces.len() != lengths.total_pieces(); {} != {}",
|
||||||
|
needed_pieces.len(),
|
||||||
|
lengths.total_pieces()
|
||||||
|
);
|
||||||
|
}
|
||||||
let required_size = lengths.chunk_bitfield_bytes();
|
let required_size = lengths.chunk_bitfield_bytes();
|
||||||
let vec = vec![0u8; required_size];
|
let vec = vec![0u8; required_size];
|
||||||
let mut chunk_bf = BF::from_boxed_slice(vec.into_boxed_slice());
|
let mut chunk_bf = BF::from_boxed_slice(vec.into_boxed_slice());
|
||||||
let range = 0..lengths.total_pieces() as usize;
|
let range = 0..lengths.total_pieces() as usize;
|
||||||
for piece_index in needed_pieces
|
for piece_index in needed_pieces
|
||||||
.get(range.clone())
|
.get(range.clone())
|
||||||
.with_context(|| format!("error getting range {range:?} from needed_pieces"))?
|
.with_context(|| format!("bug: error getting range {range:?} from needed_pieces. needed_pieces.len() = {}, range={:?}", needed_pieces.len(), range))?
|
||||||
.iter_zeros()
|
.iter_zeros()
|
||||||
{
|
{
|
||||||
let offset = piece_index * lengths.default_chunks_per_piece() as usize;
|
let offset = piece_index * lengths.default_chunks_per_piece() as usize;
|
||||||
let chunks_per_piece = lengths
|
let chunks_per_piece = lengths.chunks_per_piece(
|
||||||
.chunks_per_piece(lengths.try_validate_piece_index(piece_index as u32)?)
|
lengths
|
||||||
as usize;
|
.try_validate_piece_index(piece_index as u32)
|
||||||
|
.context("bug")?,
|
||||||
|
) as usize;
|
||||||
let range = offset..offset + chunks_per_piece;
|
let range = offset..offset + chunks_per_piece;
|
||||||
chunk_bf
|
chunk_bf
|
||||||
.get_mut(range.clone())
|
.get_mut(range.clone())
|
||||||
.with_context(|| format!("error getting range {range:?} from chunk_bf"))?
|
.with_context(|| format!("bug: error getting range {range:?} from chunk_bf"))?
|
||||||
.fill(true);
|
.fill(true);
|
||||||
}
|
}
|
||||||
Ok(chunk_bf)
|
Ok(chunk_bf)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue