@@ -5,6 +5,7 @@ use std::net::SocketAddr;
55use std:: sync:: Arc ;
66
77use aquatic_udp_protocol:: ConnectionId ;
8+ use torrust_tracker_primitives:: service_binding:: ServiceBinding ;
89
910use crate :: connection_cookie:: { gen_remote_fingerprint, make} ;
1011use crate :: event:: { self , ConnectionContext , Event } ;
@@ -33,7 +34,7 @@ impl ConnectService {
3334 pub async fn handle_connect (
3435 & self ,
3536 client_socket_addr : SocketAddr ,
36- server_socket_addr : SocketAddr ,
37+ server_service_binding : ServiceBinding ,
3738 cookie_issue_time : f64 ,
3839 ) -> ConnectionId {
3940 let connection_id =
@@ -42,7 +43,7 @@ impl ConnectService {
4243 if let Some ( udp_stats_event_sender) = self . opt_udp_core_stats_event_sender . as_deref ( ) {
4344 udp_stats_event_sender
4445 . send_event ( Event :: UdpConnect {
45- context : ConnectionContext :: new ( client_socket_addr, server_socket_addr ) ,
46+ context : ConnectionContext :: new ( client_socket_addr, server_service_binding ) ,
4647 } )
4748 . await ;
4849 }
@@ -61,6 +62,7 @@ mod tests {
6162 use std:: sync:: Arc ;
6263
6364 use mockall:: predicate:: eq;
65+ use torrust_tracker_primitives:: service_binding:: { Protocol , ServiceBinding } ;
6466
6567 use crate :: connection_cookie:: make;
6668 use crate :: event:: { ConnectionContext , Event } ;
@@ -74,14 +76,15 @@ mod tests {
7476 #[ tokio:: test]
7577 async fn a_connect_response_should_contain_the_same_transaction_id_as_the_connect_request ( ) {
7678 let server_socket_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 196 ) ) , 6969 ) ;
79+ let server_service_binding = ServiceBinding :: new ( Protocol :: UDP , server_socket_addr) . unwrap ( ) ;
7780
7881 let ( udp_core_stats_event_sender, _udp_core_stats_repository) = statistics:: setup:: factory ( false ) ;
7982 let udp_core_stats_event_sender = Arc :: new ( udp_core_stats_event_sender) ;
8083
8184 let connect_service = Arc :: new ( ConnectService :: new ( udp_core_stats_event_sender) ) ;
8285
8386 let response = connect_service
84- . handle_connect ( sample_ipv4_remote_addr ( ) , server_socket_addr , sample_issue_time ( ) )
87+ . handle_connect ( sample_ipv4_remote_addr ( ) , server_service_binding , sample_issue_time ( ) )
8588 . await ;
8689
8790 assert_eq ! (
@@ -93,14 +96,15 @@ mod tests {
9396 #[ tokio:: test]
9497 async fn a_connect_response_should_contain_a_new_connection_id ( ) {
9598 let server_socket_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 196 ) ) , 6969 ) ;
99+ let server_service_binding = ServiceBinding :: new ( Protocol :: UDP , server_socket_addr) . unwrap ( ) ;
96100
97101 let ( udp_core_stats_event_sender, _udp_core_stats_repository) = statistics:: setup:: factory ( false ) ;
98102 let udp_core_stats_event_sender = Arc :: new ( udp_core_stats_event_sender) ;
99103
100104 let connect_service = Arc :: new ( ConnectService :: new ( udp_core_stats_event_sender) ) ;
101105
102106 let response = connect_service
103- . handle_connect ( sample_ipv4_remote_addr ( ) , server_socket_addr , sample_issue_time ( ) )
107+ . handle_connect ( sample_ipv4_remote_addr ( ) , server_service_binding , sample_issue_time ( ) )
104108 . await ;
105109
106110 assert_eq ! (
@@ -113,14 +117,15 @@ mod tests {
113117 async fn a_connect_response_should_contain_a_new_connection_id_ipv6 ( ) {
114118 let client_socket_addr = sample_ipv6_remote_addr ( ) ;
115119 let server_socket_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 196 ) ) , 6969 ) ;
120+ let server_service_binding = ServiceBinding :: new ( Protocol :: UDP , server_socket_addr) . unwrap ( ) ;
116121
117122 let ( udp_core_stats_event_sender, _udp_core_stats_repository) = statistics:: setup:: factory ( false ) ;
118123 let udp_core_stats_event_sender = Arc :: new ( udp_core_stats_event_sender) ;
119124
120125 let connect_service = Arc :: new ( ConnectService :: new ( udp_core_stats_event_sender) ) ;
121126
122127 let response = connect_service
123- . handle_connect ( client_socket_addr, server_socket_addr , sample_issue_time ( ) )
128+ . handle_connect ( client_socket_addr, server_service_binding , sample_issue_time ( ) )
124129 . await ;
125130
126131 assert_eq ! (
@@ -133,12 +138,13 @@ mod tests {
133138 async fn it_should_send_the_upd4_connect_event_when_a_client_tries_to_connect_using_a_ip4_socket_address ( ) {
134139 let client_socket_addr = sample_ipv4_socket_address ( ) ;
135140 let server_socket_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 196 ) ) , 6969 ) ;
141+ let server_service_binding = ServiceBinding :: new ( Protocol :: UDP , server_socket_addr) . unwrap ( ) ;
136142
137143 let mut udp_stats_event_sender_mock = MockUdpCoreStatsEventSender :: new ( ) ;
138144 udp_stats_event_sender_mock
139145 . expect_send_event ( )
140146 . with ( eq ( Event :: UdpConnect {
141- context : ConnectionContext :: new ( client_socket_addr, server_socket_addr ) ,
147+ context : ConnectionContext :: new ( client_socket_addr, server_service_binding . clone ( ) ) ,
142148 } ) )
143149 . times ( 1 )
144150 . returning ( |_| Box :: pin ( future:: ready ( Some ( Ok ( 1 ) ) ) ) ) ;
@@ -148,20 +154,21 @@ mod tests {
148154 let connect_service = Arc :: new ( ConnectService :: new ( opt_udp_stats_event_sender) ) ;
149155
150156 connect_service
151- . handle_connect ( client_socket_addr, server_socket_addr , sample_issue_time ( ) )
157+ . handle_connect ( client_socket_addr, server_service_binding , sample_issue_time ( ) )
152158 . await ;
153159 }
154160
155161 #[ tokio:: test]
156162 async fn it_should_send_the_upd6_connect_event_when_a_client_tries_to_connect_using_a_ip6_socket_address ( ) {
157163 let client_socket_addr = sample_ipv6_remote_addr ( ) ;
158164 let server_socket_addr = SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 196 ) ) , 6969 ) ;
165+ let server_service_binding = ServiceBinding :: new ( Protocol :: UDP , server_socket_addr) . unwrap ( ) ;
159166
160167 let mut udp_stats_event_sender_mock = MockUdpCoreStatsEventSender :: new ( ) ;
161168 udp_stats_event_sender_mock
162169 . expect_send_event ( )
163170 . with ( eq ( Event :: UdpConnect {
164- context : ConnectionContext :: new ( client_socket_addr, server_socket_addr ) ,
171+ context : ConnectionContext :: new ( client_socket_addr, server_service_binding . clone ( ) ) ,
165172 } ) )
166173 . times ( 1 )
167174 . returning ( |_| Box :: pin ( future:: ready ( Some ( Ok ( 1 ) ) ) ) ) ;
@@ -171,7 +178,7 @@ mod tests {
171178 let connect_service = Arc :: new ( ConnectService :: new ( opt_udp_stats_event_sender) ) ;
172179
173180 connect_service
174- . handle_connect ( client_socket_addr, server_socket_addr , sample_issue_time ( ) )
181+ . handle_connect ( client_socket_addr, server_service_binding , sample_issue_time ( ) )
175182 . await ;
176183 }
177184 }
0 commit comments