@@ -16,7 +16,7 @@ use zerocopy::network_endian::I32;
1616
1717use crate :: error:: Error ;
1818use crate :: statistics as server_statistics;
19- use crate :: statistics:: event:: UdpResponseKind ;
19+ use crate :: statistics:: event:: { ConnectionContext , UdpRequestKind } ;
2020
2121/// It handles the `Announce` request.
2222///
@@ -32,7 +32,7 @@ pub async fn handle_announce(
3232 core_config : & Arc < Core > ,
3333 opt_udp_server_stats_event_sender : & Arc < Option < Box < dyn server_statistics:: event:: sender:: Sender > > > ,
3434 cookie_valid_range : Range < f64 > ,
35- ) -> Result < Response , ( Error , TransactionId ) > {
35+ ) -> Result < Response , ( Error , TransactionId , UdpRequestKind ) > {
3636 tracing:: Span :: current ( )
3737 . record ( "transaction_id" , request. transaction_id . 0 . to_string ( ) )
3838 . record ( "connection_id" , request. connection_id . 0 . to_string ( ) )
@@ -41,28 +41,18 @@ pub async fn handle_announce(
4141 tracing:: trace!( "handle announce" ) ;
4242
4343 if let Some ( udp_server_stats_event_sender) = opt_udp_server_stats_event_sender. as_deref ( ) {
44- match client_socket_addr. ip ( ) {
45- IpAddr :: V4 ( _) => {
46- udp_server_stats_event_sender
47- . send_event ( server_statistics:: event:: Event :: Udp4Request {
48- kind : UdpResponseKind :: Announce ,
49- } )
50- . await ;
51- }
52- IpAddr :: V6 ( _) => {
53- udp_server_stats_event_sender
54- . send_event ( server_statistics:: event:: Event :: Udp6Request {
55- kind : UdpResponseKind :: Announce ,
56- } )
57- . await ;
58- }
59- }
44+ udp_server_stats_event_sender
45+ . send_event ( server_statistics:: event:: Event :: UdpRequestAccepted {
46+ context : ConnectionContext :: new ( client_socket_addr, server_socket_addr) ,
47+ kind : UdpRequestKind :: Announce ,
48+ } )
49+ . await ;
6050 }
6151
6252 let announce_data = announce_service
6353 . handle_announce ( client_socket_addr, server_socket_addr, request, cookie_valid_range)
6454 . await
65- . map_err ( |e| ( e. into ( ) , request. transaction_id ) ) ?;
55+ . map_err ( |e| ( e. into ( ) , request. transaction_id , UdpRequestKind :: Announce ) ) ?;
6656
6757 Ok ( build_response ( client_socket_addr, request, core_config, & announce_data) )
6858}
@@ -226,7 +216,7 @@ mod tests {
226216 TorrentPeerBuilder ,
227217 } ;
228218 use crate :: statistics as server_statistics;
229- use crate :: statistics:: event:: UdpResponseKind ;
219+ use crate :: statistics:: event:: UdpRequestKind ;
230220
231221 #[ tokio:: test]
232222 async fn an_announced_peer_should_be_added_to_the_tracker ( ) {
@@ -429,11 +419,15 @@ mod tests {
429419
430420 #[ tokio:: test]
431421 async fn should_send_the_upd4_announce_event ( ) {
422+ let client_socket_addr = sample_ipv4_socket_address ( ) ;
423+ let server_socket_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 196 ) ) , 6969 ) ;
424+
432425 let mut udp_server_stats_event_sender_mock = MockUdpServerStatsEventSender :: new ( ) ;
433426 udp_server_stats_event_sender_mock
434427 . expect_send_event ( )
435- . with ( eq ( server_statistics:: event:: Event :: Udp4Request {
436- kind : UdpResponseKind :: Announce ,
428+ . with ( eq ( server_statistics:: event:: Event :: UdpRequestAccepted {
429+ context : server_statistics:: event:: ConnectionContext :: new ( client_socket_addr, server_socket_addr) ,
430+ kind : UdpRequestKind :: Announce ,
437431 } ) )
438432 . times ( 1 )
439433 . returning ( |_| Box :: pin ( future:: ready ( Some ( Ok ( ( ) ) ) ) ) ) ;
@@ -443,9 +437,6 @@ mod tests {
443437 let ( core_tracker_services, core_udp_tracker_services, _server_udp_tracker_services) =
444438 initialize_core_tracker_services_for_default_tracker_configuration ( ) ;
445439
446- let client_socket_addr = sample_ipv4_socket_address ( ) ;
447- let server_socket_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 196 ) ) , 6969 ) ;
448-
449440 handle_announce (
450441 & core_udp_tracker_services. announce_service ,
451442 client_socket_addr,
@@ -549,7 +540,7 @@ mod tests {
549540 sample_issue_time, MockUdpServerStatsEventSender , TorrentPeerBuilder ,
550541 } ;
551542 use crate :: statistics as server_statistics;
552- use crate :: statistics:: event:: UdpResponseKind ;
543+ use crate :: statistics:: event:: UdpRequestKind ;
553544
554545 #[ tokio:: test]
555546 async fn an_announced_peer_should_be_added_to_the_tracker ( ) {
@@ -771,11 +762,15 @@ mod tests {
771762
772763 #[ tokio:: test]
773764 async fn should_send_the_upd6_announce_event ( ) {
765+ let client_socket_addr = sample_ipv6_remote_addr ( ) ;
766+ let server_socket_addr = SocketAddr :: new ( IpAddr :: V6 ( Ipv6Addr :: new ( 0 , 0 , 0 , 0 , 203 , 0 , 113 , 196 ) ) , 6969 ) ;
767+
774768 let mut udp_server_stats_event_sender_mock = MockUdpServerStatsEventSender :: new ( ) ;
775769 udp_server_stats_event_sender_mock
776770 . expect_send_event ( )
777- . with ( eq ( server_statistics:: event:: Event :: Udp6Request {
778- kind : UdpResponseKind :: Announce ,
771+ . with ( eq ( server_statistics:: event:: Event :: UdpRequestAccepted {
772+ context : server_statistics:: event:: ConnectionContext :: new ( client_socket_addr, server_socket_addr) ,
773+ kind : UdpRequestKind :: Announce ,
779774 } ) )
780775 . times ( 1 )
781776 . returning ( |_| Box :: pin ( future:: ready ( Some ( Ok ( ( ) ) ) ) ) ) ;
@@ -785,9 +780,6 @@ mod tests {
785780 let ( core_tracker_services, core_udp_tracker_services, _server_udp_tracker_services) =
786781 initialize_core_tracker_services_for_default_tracker_configuration ( ) ;
787782
788- let client_socket_addr = sample_ipv6_remote_addr ( ) ;
789- let server_socket_addr = SocketAddr :: new ( IpAddr :: V6 ( Ipv6Addr :: new ( 0 , 0 , 0 , 0 , 203 , 0 , 113 , 196 ) ) , 6969 ) ;
790-
791783 let announce_request = AnnounceRequestBuilder :: default ( )
792784 . with_connection_id ( make ( gen_remote_fingerprint ( & client_socket_addr) , sample_issue_time ( ) ) . unwrap ( ) )
793785 . into ( ) ;
@@ -819,7 +811,6 @@ mod tests {
819811 use bittorrent_tracker_core:: whitelist:: repository:: in_memory:: InMemoryWhitelist ;
820812 use bittorrent_udp_tracker_core:: connection_cookie:: { gen_remote_fingerprint, make} ;
821813 use bittorrent_udp_tracker_core:: services:: announce:: AnnounceService ;
822- use bittorrent_udp_tracker_core:: statistics:: event:: ConnectionContext ;
823814 use bittorrent_udp_tracker_core:: { self , statistics as core_statistics} ;
824815 use mockall:: predicate:: eq;
825816
@@ -830,7 +821,7 @@ mod tests {
830821 TrackerConfigurationBuilder ,
831822 } ;
832823 use crate :: statistics as server_statistics;
833- use crate :: statistics:: event:: UdpResponseKind ;
824+ use crate :: statistics:: event:: UdpRequestKind ;
834825
835826 #[ tokio:: test]
836827 async fn the_peer_ip_should_be_changed_to_the_external_ip_in_the_tracker_configuration ( ) {
@@ -860,7 +851,7 @@ mod tests {
860851 udp_core_stats_event_sender_mock
861852 . expect_send_event ( )
862853 . with ( eq ( core_statistics:: event:: Event :: UdpAnnounce {
863- context : ConnectionContext :: new ( client_socket_addr, server_socket_addr) ,
854+ context : core_statistics :: event :: ConnectionContext :: new ( client_socket_addr, server_socket_addr) ,
864855 } ) )
865856 . times ( 1 )
866857 . returning ( |_| Box :: pin ( future:: ready ( Some ( Ok ( ( ) ) ) ) ) ) ;
@@ -870,8 +861,9 @@ mod tests {
870861 let mut udp_server_stats_event_sender_mock = MockUdpServerStatsEventSender :: new ( ) ;
871862 udp_server_stats_event_sender_mock
872863 . expect_send_event ( )
873- . with ( eq ( server_statistics:: event:: Event :: Udp6Request {
874- kind : UdpResponseKind :: Announce ,
864+ . with ( eq ( server_statistics:: event:: Event :: UdpRequestAccepted {
865+ context : server_statistics:: event:: ConnectionContext :: new ( client_socket_addr, server_socket_addr) ,
866+ kind : UdpRequestKind :: Announce ,
875867 } ) )
876868 . times ( 1 )
877869 . returning ( |_| Box :: pin ( future:: ready ( Some ( Ok ( ( ) ) ) ) ) ) ;
0 commit comments