From 23dc19bab5cd50ab09b3c525df82e9034279b97c Mon Sep 17 00:00:00 2001 From: Cameron Garnham Date: Sat, 13 Jul 2024 14:10:21 +0200 Subject: [PATCH] dev: remove announce_request wrapper --- src/servers/udp/handlers.rs | 11 ++++------- src/servers/udp/mod.rs | 1 - src/servers/udp/peer_builder.rs | 15 +++++++-------- src/servers/udp/request.rs | 28 ---------------------------- 4 files changed, 11 insertions(+), 44 deletions(-) delete mode 100644 src/servers/udp/request.rs diff --git a/src/servers/udp/handlers.rs b/src/servers/udp/handlers.rs index 53683fbb9..e37179b4b 100644 --- a/src/servers/udp/handlers.rs +++ b/src/servers/udp/handlers.rs @@ -22,7 +22,6 @@ use crate::core::{statistics, ScrapeData, Tracker}; use crate::servers::udp::error::Error; use crate::servers::udp::logging::{log_bad_request, log_error_response, log_request, log_response}; use crate::servers::udp::peer_builder; -use crate::servers::udp::request::AnnounceWrapper; use crate::shared::bit_torrent::common::MAX_SCRAPE_TORRENTS; /// It handles the incoming UDP packets. @@ -152,9 +151,7 @@ pub async fn handle_announce( check(&remote_addr, &from_connection_id(&announce_request.connection_id))?; - let wrapped_announce_request = AnnounceWrapper::new(announce_request); - - let info_hash = wrapped_announce_request.info_hash; + let info_hash = InfoHash(announce_request.info_hash.0); let remote_client_ip = remote_addr.ip(); // Authorization @@ -162,7 +159,7 @@ pub async fn handle_announce( source: (Arc::new(e) as Arc).into(), })?; - let mut peer = peer_builder::from_request(&wrapped_announce_request, &remote_client_ip); + let mut peer = peer_builder::from_request(announce_request, &remote_client_ip); let response = tracker.announce(&info_hash, &mut peer, &remote_client_ip); @@ -179,7 +176,7 @@ pub async fn handle_announce( if remote_addr.is_ipv4() { let announce_response = AnnounceResponse { fixed: AnnounceResponseFixedData { - transaction_id: wrapped_announce_request.announce_request.transaction_id, + transaction_id: announce_request.transaction_id, announce_interval: AnnounceInterval(I32::new(i64::from(tracker.get_announce_policy().interval) as i32)), leechers: NumberOfPeers(I32::new(i64::from(response.stats.incomplete) as i32)), seeders: NumberOfPeers(I32::new(i64::from(response.stats.complete) as i32)), @@ -206,7 +203,7 @@ pub async fn handle_announce( } else { let announce_response = AnnounceResponse { fixed: AnnounceResponseFixedData { - transaction_id: wrapped_announce_request.announce_request.transaction_id, + transaction_id: announce_request.transaction_id, announce_interval: AnnounceInterval(I32::new(i64::from(tracker.get_announce_policy().interval) as i32)), leechers: NumberOfPeers(I32::new(i64::from(response.stats.incomplete) as i32)), seeders: NumberOfPeers(I32::new(i64::from(response.stats.complete) as i32)), diff --git a/src/servers/udp/mod.rs b/src/servers/udp/mod.rs index 8ea05d5b1..8e64374df 100644 --- a/src/servers/udp/mod.rs +++ b/src/servers/udp/mod.rs @@ -646,7 +646,6 @@ pub mod error; pub mod handlers; pub mod logging; pub mod peer_builder; -pub mod request; pub mod server; pub const UDP_TRACKER_LOG_TARGET: &str = "UDP TRACKER"; diff --git a/src/servers/udp/peer_builder.rs b/src/servers/udp/peer_builder.rs index e54a23443..39881ad5c 100644 --- a/src/servers/udp/peer_builder.rs +++ b/src/servers/udp/peer_builder.rs @@ -5,7 +5,6 @@ use torrust_tracker_clock::clock::Time; use torrust_tracker_primitives::announce_event::AnnounceEvent; use torrust_tracker_primitives::{peer, NumberOfBytes}; -use super::request::AnnounceWrapper; use crate::CurrentClock; /// Extracts the [`peer::Peer`] info from the @@ -16,8 +15,8 @@ use crate::CurrentClock; /// * `announce_wrapper` - The announce request to extract the peer info from. /// * `peer_ip` - The real IP address of the peer, not the one in the announce request. #[must_use] -pub fn from_request(announce_wrapper: &AnnounceWrapper, peer_ip: &IpAddr) -> peer::Peer { - let announce_event = match aquatic_udp_protocol::AnnounceEvent::from(announce_wrapper.announce_request.event) { +pub fn from_request(announce_request: &aquatic_udp_protocol::AnnounceRequest, peer_ip: &IpAddr) -> peer::Peer { + let announce_event = match aquatic_udp_protocol::AnnounceEvent::from(announce_request.event) { aquatic_udp_protocol::AnnounceEvent::Started => AnnounceEvent::Started, aquatic_udp_protocol::AnnounceEvent::Stopped => AnnounceEvent::Stopped, aquatic_udp_protocol::AnnounceEvent::Completed => AnnounceEvent::Completed, @@ -25,12 +24,12 @@ pub fn from_request(announce_wrapper: &AnnounceWrapper, peer_ip: &IpAddr) -> pee }; peer::Peer { - peer_id: peer::Id(announce_wrapper.announce_request.peer_id.0), - peer_addr: SocketAddr::new(*peer_ip, announce_wrapper.announce_request.port.0.into()), + peer_id: peer::Id(announce_request.peer_id.0), + peer_addr: SocketAddr::new(*peer_ip, announce_request.port.0.into()), updated: CurrentClock::now(), - uploaded: NumberOfBytes(announce_wrapper.announce_request.bytes_uploaded.0.into()), - downloaded: NumberOfBytes(announce_wrapper.announce_request.bytes_downloaded.0.into()), - left: NumberOfBytes(announce_wrapper.announce_request.bytes_left.0.into()), + uploaded: NumberOfBytes(announce_request.bytes_uploaded.0.into()), + downloaded: NumberOfBytes(announce_request.bytes_downloaded.0.into()), + left: NumberOfBytes(announce_request.bytes_left.0.into()), event: announce_event, } } diff --git a/src/servers/udp/request.rs b/src/servers/udp/request.rs deleted file mode 100644 index f95fec07a..000000000 --- a/src/servers/udp/request.rs +++ /dev/null @@ -1,28 +0,0 @@ -//! UDP request types. -//! -//! Torrust Tracker uses the [`aquatic_udp_protocol`](https://crates.io/crates/aquatic_udp_protocol) -//! crate to parse and serialize UDP requests. -//! -//! Some of the type in this module are wrappers around the types in the -//! `aquatic_udp_protocol` crate. -use aquatic_udp_protocol::AnnounceRequest; -use torrust_tracker_primitives::info_hash::InfoHash; - -/// Wrapper around [`AnnounceRequest`]. -pub struct AnnounceWrapper { - /// [`AnnounceRequest`] to wrap. - pub announce_request: AnnounceRequest, - /// Info hash of the torrent. - pub info_hash: InfoHash, -} - -impl AnnounceWrapper { - /// Creates a new [`AnnounceWrapper`] from an [`AnnounceRequest`]. - #[must_use] - pub fn new(announce_request: &AnnounceRequest) -> Self { - AnnounceWrapper { - announce_request: *announce_request, - info_hash: InfoHash(announce_request.info_hash.0), - } - } -}