bittorrent_udp: response_to_bytes: improve scrape encoding

This commit is contained in:
Joakim Frostegård 2020-04-09 20:27:50 +02:00
parent 9705d1822e
commit a37b44ec89

View file

@ -175,33 +175,23 @@ pub fn response_from_bytes(
2 => { 2 => {
let mut stats = Vec::new(); let mut stats = Vec::new();
// TODO: transition to while let && when available let mut buf = [0u8; 12];
loop {
if let Ok(seeders) = bytes.read_i32::<NetworkEndian>() { while let Ok(()) = bytes.read_exact(&mut buf){
if let Ok(downloaded) = bytes.read_i32::<NetworkEndian>() { let seeders = (&buf[0..4]).read_i32::<NetworkEndian>().unwrap();
if let Ok(leechers) = bytes.read_i32::<NetworkEndian>() { let downloads = (&buf[4..8]).read_i32::<NetworkEndian>().unwrap();
stats.push(types::TorrentScrapeStatistics { let leechers = (&buf[8..12]).read_i32::<NetworkEndian>().unwrap();
seeders: types::NumberOfPeers(seeders),
completed: types::NumberOfDownloads(downloaded), stats.push(types::TorrentScrapeStatistics {
leechers: types::NumberOfPeers(leechers) seeders: types::NumberOfPeers(seeders),
}); completed: types::NumberOfDownloads(downloads),
} leechers:types::NumberOfPeers(leechers)
else { })
break;
}
}
else {
break;
}
}
else {
break;
}
} }
Ok(types::Response::Scrape(types::ScrapeResponse { Ok(types::Response::Scrape(types::ScrapeResponse {
transaction_id: types::TransactionId(transaction_id), transaction_id: types::TransactionId(transaction_id),
torrent_stats: stats torrent_stats: stats
})) }))
}, },