@@ -6,13 +6,11 @@ use std::sync::Arc;
66use aquatic_udp_protocol:: {
77 NumberOfDownloads , NumberOfPeers , Response , ScrapeRequest , ScrapeResponse , TorrentScrapeStatistics , TransactionId ,
88} ;
9- use bittorrent_primitives:: info_hash:: InfoHash ;
109use bittorrent_tracker_core:: scrape_handler:: ScrapeHandler ;
1110use tracing:: { instrument, Level } ;
1211use zerocopy:: network_endian:: I32 ;
1312
1413use crate :: packages:: udp_tracker_core;
15- use crate :: packages:: udp_tracker_core:: services;
1614use crate :: servers:: udp:: connection_cookie:: check;
1715use crate :: servers:: udp:: error:: Error ;
1816use crate :: servers:: udp:: handlers:: gen_remote_fingerprint;
@@ -37,20 +35,19 @@ pub async fn handle_scrape(
3735
3836 tracing:: trace!( "handle scrape" ) ;
3937
38+ // todo: move authentication to `udp_tracker_core::services::scrape::handle_scrape`
39+
4040 check (
4141 & request. connection_id ,
4242 gen_remote_fingerprint ( & remote_addr) ,
4343 cookie_valid_range,
4444 )
4545 . map_err ( |e| ( e, request. transaction_id ) ) ?;
4646
47- // Convert from aquatic infohashes
48- let mut info_hashes: Vec < InfoHash > = vec ! [ ] ;
49- for info_hash in & request. info_hashes {
50- info_hashes. push ( ( * info_hash) . into ( ) ) ;
51- }
47+ let scrape_data =
48+ udp_tracker_core:: services:: scrape:: handle_scrape ( remote_addr, request, scrape_handler, opt_udp_stats_event_sender) . await ;
5249
53- let scrape_data = services :: scrape :: invoke ( scrape_handler , opt_udp_stats_event_sender , & info_hashes , remote_addr ) . await ;
50+ // todo: extract `build_response` function.
5451
5552 let mut torrent_stats: Vec < TorrentScrapeStatistics > = Vec :: new ( ) ;
5653
0 commit comments