From dfdb6b5fae46800f4e0b3759a2b3a0593a88f5f7 Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Mon, 25 Dec 2023 09:24:57 -0500 Subject: [PATCH] Do not ignore errors in reserve_next_needed_piece() --- crates/librqbit/src/torrent_state/live/mod.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/librqbit/src/torrent_state/live/mod.rs b/crates/librqbit/src/torrent_state/live/mod.rs index 46e3b85..72a7db5 100644 --- a/crates/librqbit/src/torrent_state/live/mod.rs +++ b/crates/librqbit/src/torrent_state/live/mod.rs @@ -1011,10 +1011,15 @@ impl PeerHandler { } } + let n_opt = match n_opt { + Some(n_opt) => n_opt, + None => return Ok(None), + }; + self.state .lengths - .validate_piece_index(n_opt.context("invalid n_opt")? as u32) - .context("invalid piece")? + .validate_piece_index(n_opt as u32) + .context("bug: invalid piece")? }; g.inflight_pieces.insert( n, @@ -1214,7 +1219,7 @@ impl PeerHandler { // Afterwards means we are close to completion, try stealing more aggressively. let next = match self .try_steal_old_slow_piece(10.) - .or_else(|| self.reserve_next_needed_piece().ok().flatten()) + .map_or_else(|| self.reserve_next_needed_piece(), |v| Ok(Some(v)))? .or_else(|| self.try_steal_old_slow_piece(3.)) { Some(next) => next,