diff --git a/crates/librqbit/src/chunk_tracker.rs b/crates/librqbit/src/chunk_tracker.rs index 6953f87..8c83457 100644 --- a/crates/librqbit/src/chunk_tracker.rs +++ b/crates/librqbit/src/chunk_tracker.rs @@ -190,6 +190,7 @@ impl ChunkTracker { file_priorities .iter() .filter_map(|p| opened_files.get(*p)) + .filter(|f| !f.approx_is_finished()) .flat_map(|f| f.iter_piece_priorities()) .filter(|id| self.queue_pieces[*id]) } diff --git a/crates/librqbit/src/opened_file.rs b/crates/librqbit/src/opened_file.rs index 421e3ba..357a960 100644 --- a/crates/librqbit/src/opened_file.rs +++ b/crates/librqbit/src/opened_file.rs @@ -109,6 +109,10 @@ impl OpenedFile { size } + pub fn approx_is_finished(&self) -> bool { + self.have.load(Ordering::Relaxed) == self.len + } + pub fn iter_piece_priorities(&self) -> impl Iterator { iter_piece_priorities(self.piece_range_usize()) } diff --git a/crates/rqbit/src/main.rs b/crates/rqbit/src/main.rs index 27246c9..912c4fe 100644 --- a/crates/rqbit/src/main.rs +++ b/crates/rqbit/src/main.rs @@ -35,7 +35,7 @@ struct Opts { log_file: Option, /// The value for RUST_LOG in the log file - #[arg(long = "log-file-rust-log", default_value = "librqbit=trace,info")] + #[arg(long = "log-file-rust-log", default_value = "librqbit=debug,info")] log_file_rust_log: String, /// The interval to poll trackers, e.g. 30s.