mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 02:35:31 +00:00
udp: request workers: move some code into run_request_worker
This commit is contained in:
parent
313b73daef
commit
d0c6fb0e29
1 changed files with 20 additions and 38 deletions
|
|
@ -30,7 +30,7 @@ pub fn run_request_worker(
|
||||||
worker_index: RequestWorkerIndex,
|
worker_index: RequestWorkerIndex,
|
||||||
) {
|
) {
|
||||||
let mut torrents = TorrentMaps::default();
|
let mut torrents = TorrentMaps::default();
|
||||||
let mut small_rng = SmallRng::from_entropy();
|
let mut rng = SmallRng::from_entropy();
|
||||||
|
|
||||||
let timeout = Duration::from_millis(config.request_channel_recv_timeout_ms);
|
let timeout = Duration::from_millis(config.request_channel_recv_timeout_ms);
|
||||||
let mut peer_valid_until = ValidUntil::new(config.cleaning.max_peer_age);
|
let mut peer_valid_until = ValidUntil::new(config.cleaning.max_peer_age);
|
||||||
|
|
@ -46,14 +46,24 @@ pub fn run_request_worker(
|
||||||
loop {
|
loop {
|
||||||
if let Ok((sender_index, request, src)) = request_receiver.recv_timeout(timeout) {
|
if let Ok((sender_index, request, src)) = request_receiver.recv_timeout(timeout) {
|
||||||
let response = match request {
|
let response = match request {
|
||||||
ConnectedRequest::Announce(request) => handle_announce_request(
|
ConnectedRequest::Announce(request) => match src.get().ip() {
|
||||||
&config,
|
IpAddr::V4(ip) => ConnectedResponse::AnnounceIpv4(handle_announce_request(
|
||||||
&mut small_rng,
|
&config,
|
||||||
&mut torrents,
|
&mut rng,
|
||||||
request,
|
&mut torrents.ipv4,
|
||||||
src,
|
request,
|
||||||
peer_valid_until,
|
ip,
|
||||||
),
|
peer_valid_until,
|
||||||
|
)),
|
||||||
|
IpAddr::V6(ip) => ConnectedResponse::AnnounceIpv6(handle_announce_request(
|
||||||
|
&config,
|
||||||
|
&mut rng,
|
||||||
|
&mut torrents.ipv6,
|
||||||
|
request,
|
||||||
|
ip,
|
||||||
|
peer_valid_until,
|
||||||
|
)),
|
||||||
|
},
|
||||||
ConnectedRequest::Scrape(request) => {
|
ConnectedRequest::Scrape(request) => {
|
||||||
ConnectedResponse::Scrape(handle_scrape_request(&mut torrents, src, request))
|
ConnectedResponse::Scrape(handle_scrape_request(&mut torrents, src, request))
|
||||||
}
|
}
|
||||||
|
|
@ -98,35 +108,7 @@ pub fn run_request_worker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_announce_request(
|
fn handle_announce_request<I: Ip>(
|
||||||
config: &Config,
|
|
||||||
rng: &mut SmallRng,
|
|
||||||
torrents: &mut TorrentMaps,
|
|
||||||
request: AnnounceRequest,
|
|
||||||
src: CanonicalSocketAddr,
|
|
||||||
peer_valid_until: ValidUntil,
|
|
||||||
) -> ConnectedResponse {
|
|
||||||
match src.get().ip() {
|
|
||||||
IpAddr::V4(ip) => ConnectedResponse::AnnounceIpv4(handle_announce_request_inner(
|
|
||||||
config,
|
|
||||||
rng,
|
|
||||||
&mut torrents.ipv4,
|
|
||||||
request,
|
|
||||||
ip,
|
|
||||||
peer_valid_until,
|
|
||||||
)),
|
|
||||||
IpAddr::V6(ip) => ConnectedResponse::AnnounceIpv6(handle_announce_request_inner(
|
|
||||||
config,
|
|
||||||
rng,
|
|
||||||
&mut torrents.ipv6,
|
|
||||||
request,
|
|
||||||
ip,
|
|
||||||
peer_valid_until,
|
|
||||||
)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn handle_announce_request_inner<I: Ip>(
|
|
||||||
config: &Config,
|
config: &Config,
|
||||||
rng: &mut SmallRng,
|
rng: &mut SmallRng,
|
||||||
torrents: &mut TorrentMap<I>,
|
torrents: &mut TorrentMap<I>,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue