mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 10:45:30 +00:00
bittorrent_udp: response_from_bytes: more fixes
This commit is contained in:
parent
a37b44ec89
commit
13e7ef6b57
2 changed files with 13 additions and 20 deletions
|
|
@ -53,7 +53,7 @@ fn print_results(
|
||||||
|
|
||||||
|
|
||||||
fn main(){
|
fn main(){
|
||||||
let num_rounds = 10;
|
let num_rounds = 1;
|
||||||
|
|
||||||
let mut connect_data = (0.0, 0.0);
|
let mut connect_data = (0.0, 0.0);
|
||||||
let mut announce_data = (0.0, 0.0);
|
let mut announce_data = (0.0, 0.0);
|
||||||
|
|
|
||||||
|
|
@ -173,21 +173,20 @@ pub fn response_from_bytes(
|
||||||
|
|
||||||
// Scrape
|
// Scrape
|
||||||
2 => {
|
2 => {
|
||||||
let mut stats = Vec::new();
|
let position = bytes.position() as usize;
|
||||||
|
let inner = bytes.into_inner();
|
||||||
|
|
||||||
let mut buf = [0u8; 12];
|
let stats = inner[position..].chunks_exact(12).map(|chunk| {
|
||||||
|
let seeders = (&chunk[0..4]).read_i32::<NetworkEndian>().unwrap();
|
||||||
|
let downloads = (&chunk[4..8]).read_i32::<NetworkEndian>().unwrap();
|
||||||
|
let leechers = (&chunk[8..12]).read_i32::<NetworkEndian>().unwrap();
|
||||||
|
|
||||||
while let Ok(()) = bytes.read_exact(&mut buf){
|
types::TorrentScrapeStatistics {
|
||||||
let seeders = (&buf[0..4]).read_i32::<NetworkEndian>().unwrap();
|
|
||||||
let downloads = (&buf[4..8]).read_i32::<NetworkEndian>().unwrap();
|
|
||||||
let leechers = (&buf[8..12]).read_i32::<NetworkEndian>().unwrap();
|
|
||||||
|
|
||||||
stats.push(types::TorrentScrapeStatistics {
|
|
||||||
seeders: types::NumberOfPeers(seeders),
|
seeders: types::NumberOfPeers(seeders),
|
||||||
completed: types::NumberOfDownloads(downloads),
|
completed: types::NumberOfDownloads(downloads),
|
||||||
leechers:types::NumberOfPeers(leechers)
|
leechers:types::NumberOfPeers(leechers)
|
||||||
})
|
}
|
||||||
}
|
}).collect();
|
||||||
|
|
||||||
Ok(types::Response::Scrape(types::ScrapeResponse {
|
Ok(types::Response::Scrape(types::ScrapeResponse {
|
||||||
transaction_id: types::TransactionId(transaction_id),
|
transaction_id: types::TransactionId(transaction_id),
|
||||||
|
|
@ -197,18 +196,12 @@ pub fn response_from_bytes(
|
||||||
|
|
||||||
// Error
|
// Error
|
||||||
3 => {
|
3 => {
|
||||||
let mut message_bytes = Vec::new();
|
let position = bytes.position() as usize;
|
||||||
|
let inner = bytes.into_inner();
|
||||||
bytes.read_to_end(&mut message_bytes)?;
|
|
||||||
|
|
||||||
let message = match String::from_utf8(message_bytes) {
|
|
||||||
Ok(message) => message,
|
|
||||||
Err(_) => "".to_string()
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(types::Response::Error(types::ErrorResponse {
|
Ok(types::Response::Error(types::ErrorResponse {
|
||||||
transaction_id: types::TransactionId(transaction_id),
|
transaction_id: types::TransactionId(transaction_id),
|
||||||
message
|
message: String::from_utf8_lossy(&inner[position..]).into()
|
||||||
}))
|
}))
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue