udp: request worker: remove layer of branching

This commit is contained in:
Joakim Frostegård 2022-04-16 02:10:52 +02:00
parent 9fedf82113
commit 1025391e4f

View file

@ -42,27 +42,33 @@ 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, src.get().ip()) {
ConnectedRequest::Announce(request) => match src.get().ip() { (ConnectedRequest::Announce(request), IpAddr::V4(ip)) => {
IpAddr::V4(ip) => ConnectedResponse::AnnounceIpv4(handle_announce_request( let response = handle_announce_request(
&config, &config,
&mut rng, &mut rng,
&mut torrents.ipv4, &mut torrents.ipv4,
request, request,
ip, ip,
peer_valid_until, peer_valid_until,
)), );
IpAddr::V6(ip) => ConnectedResponse::AnnounceIpv6(handle_announce_request(
ConnectedResponse::AnnounceIpv4(response)
}
(ConnectedRequest::Announce(request), IpAddr::V6(ip)) => {
let response = handle_announce_request(
&config, &config,
&mut rng, &mut rng,
&mut torrents.ipv6, &mut torrents.ipv6,
request, request,
ip, ip,
peer_valid_until, peer_valid_until,
)), );
},
ConnectedRequest::Scrape(request) => { ConnectedResponse::AnnounceIpv6(response)
ConnectedResponse::Scrape(handle_scrape_request(&mut torrents, src, request)) }
(ConnectedRequest::Scrape(request), ip) => {
ConnectedResponse::Scrape(handle_scrape_request(&mut torrents, ip, request))
} }
}; };
@ -177,7 +183,7 @@ fn calc_max_num_peers_to_take(config: &Config, peers_wanted: i32) -> usize {
fn handle_scrape_request( fn handle_scrape_request(
torrents: &mut TorrentMaps, torrents: &mut TorrentMaps,
src: CanonicalSocketAddr, src: IpAddr,
request: PendingScrapeRequest, request: PendingScrapeRequest,
) -> PendingScrapeResponse { ) -> PendingScrapeResponse {
const EMPTY_STATS: TorrentScrapeStatistics = create_torrent_scrape_statistics(0, 0); const EMPTY_STATS: TorrentScrapeStatistics = create_torrent_scrape_statistics(0, 0);