mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 18:55:32 +00:00
announce handler: init SmallRng outside of extract_response_peers
This commit is contained in:
parent
09cb31a4c9
commit
aa771f6a68
1 changed files with 14 additions and 5 deletions
|
|
@ -46,6 +46,8 @@ pub fn handle_announce_requests(
|
||||||
responses: &mut Vec<(Response, SocketAddr)>,
|
responses: &mut Vec<(Response, SocketAddr)>,
|
||||||
requests: Drain<(AnnounceRequest, SocketAddr)>,
|
requests: Drain<(AnnounceRequest, SocketAddr)>,
|
||||||
){
|
){
|
||||||
|
let mut rng = SmallRng::from_rng(thread_rng()).unwrap();
|
||||||
|
|
||||||
responses.extend(requests.filter_map(|(request, src)| {
|
responses.extend(requests.filter_map(|(request, src)| {
|
||||||
let connection_key = ConnectionKey {
|
let connection_key = ConnectionKey {
|
||||||
connection_id: request.connection_id,
|
connection_id: request.connection_id,
|
||||||
|
|
@ -96,7 +98,11 @@ pub fn handle_announce_requests(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let response_peers = extract_response_peers(&torrent_data.peers, 255); // FIXME num peers
|
let response_peers = extract_response_peers(
|
||||||
|
&mut rng,
|
||||||
|
&torrent_data.peers,
|
||||||
|
255
|
||||||
|
); // FIXME num peers
|
||||||
|
|
||||||
let response = Response::Announce(AnnounceResponse {
|
let response = Response::Announce(AnnounceResponse {
|
||||||
transaction_id: request.transaction_id,
|
transaction_id: request.transaction_id,
|
||||||
|
|
@ -159,6 +165,7 @@ pub fn handle_scrape_requests(
|
||||||
///
|
///
|
||||||
/// Don't care if we send back announcing peer.
|
/// Don't care if we send back announcing peer.
|
||||||
pub fn extract_response_peers(
|
pub fn extract_response_peers(
|
||||||
|
rng: &mut impl Rng,
|
||||||
peer_map: &PeerMap,
|
peer_map: &PeerMap,
|
||||||
number_of_peers_to_take: usize,
|
number_of_peers_to_take: usize,
|
||||||
) -> Vec<ResponsePeer> {
|
) -> Vec<ResponsePeer> {
|
||||||
|
|
@ -169,11 +176,9 @@ pub fn extract_response_peers(
|
||||||
.map(Peer::to_response_peer)
|
.map(Peer::to_response_peer)
|
||||||
.collect()
|
.collect()
|
||||||
} else {
|
} else {
|
||||||
let mut rng = SmallRng::from_rng(thread_rng()).unwrap();
|
|
||||||
|
|
||||||
peer_map.values()
|
peer_map.values()
|
||||||
.map(Peer::to_response_peer)
|
.map(Peer::to_response_peer)
|
||||||
.choose_multiple(&mut rng, number_of_peers_to_take)
|
.choose_multiple(rng, number_of_peers_to_take)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -196,6 +201,7 @@ mod tests {
|
||||||
use std::net::IpAddr;
|
use std::net::IpAddr;
|
||||||
|
|
||||||
use indexmap::IndexMap;
|
use indexmap::IndexMap;
|
||||||
|
use rand::thread_rng;
|
||||||
use quickcheck::{TestResult, quickcheck};
|
use quickcheck::{TestResult, quickcheck};
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
@ -234,7 +240,10 @@ mod tests {
|
||||||
peer_map.insert(key, value);
|
peer_map.insert(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let mut rng = thread_rng();
|
||||||
|
|
||||||
let num_returned = extract_response_peers(
|
let num_returned = extract_response_peers(
|
||||||
|
&mut rng,
|
||||||
&peer_map,
|
&peer_map,
|
||||||
req_num_peers
|
req_num_peers
|
||||||
).len();
|
).len();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue