Skip to content

Commit 8ac653b

Browse files
committed
fix: Keep pending block requests until the piece arrives
1 parent cfd2e96 commit 8ac653b

File tree

1 file changed

+5
-10
lines changed

1 file changed

+5
-10
lines changed

crates/libtortillas/src/peer/actor.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -257,31 +257,26 @@ impl PeerActor {
257257
}
258258

259259
let queued_block_requests = self.pending_block_requests.len();
260-
let mut completed = Vec::with_capacity(queued_block_requests);
260+
let mut completed = 0usize;
261261

262262
for request in self.pending_block_requests.iter() {
263263
let (index, begin, length) = *request;
264-
if let Ok(()) = self
264+
if self
265265
.stream
266266
.send(PeerMessages::Request(
267267
index as u32,
268268
begin as u32,
269269
length as u32,
270270
))
271271
.await
272+
.is_ok()
272273
{
273-
completed.push((index, begin, length));
274+
completed += 1;
274275
}
275276
}
276-
for (index, begin, length) in &completed {
277-
self
278-
.pending_block_requests
279-
.remove(&(*index, *begin, *length));
280-
}
281-
282277
trace!(
283278
amount = queued_block_requests,
284-
amount_succussful = completed.len(),
279+
amount_succussful = completed,
285280
"Flushed queued block requests to peer"
286281
);
287282
}

0 commit comments

Comments
 (0)