@@ -16,7 +16,7 @@ use crate::traits::PrintFullError;
1616static SERVERS : OnceCell < RwLock < Vec < Server > > > = OnceCell :: const_new ( ) ;
1717
1818struct Server {
19- host : String ,
19+ server : String ,
2020 uplink_only : bool ,
2121 gateway_id_prefixes : Vec < lrwn_filters:: EuiPrefix > ,
2222 downlink_tx : UnboundedSender < ( GatewayId , Vec < u8 > ) > ,
@@ -43,21 +43,21 @@ impl Server {
4343 // Check if we already have a socket for the given Gateway ID to the
4444 // server and if not, we create it.
4545 if let std:: collections:: hash_map:: Entry :: Vacant ( e) = self . sockets . entry ( gateway_id) {
46- info ! ( gateway_id = %gateway_id, server = %self . host , "Initializing forwarder to server" ) ;
46+ info ! ( gateway_id = %gateway_id, server = %self . server , "Initializing forwarder to server" ) ;
4747
4848 let socket = UdpSocket :: bind ( "0.0.0.0:0" )
4949 . await
5050 . context ( "UDP socket bind" ) ?;
5151 socket
52- . connect ( & self . host )
52+ . connect ( & self . server )
5353 . await
5454 . context ( "UDP socket connect" ) ?;
5555
5656 let socket = Arc :: new ( socket) ;
5757 let ( stop_tx, stop_rx) = oneshot:: channel :: < ( ) > ( ) ;
5858
5959 tokio:: spawn ( handle_downlink (
60- self . host . clone ( ) ,
60+ self . server . clone ( ) ,
6161 stop_rx,
6262 self . uplink_only ,
6363 socket. clone ( ) ,
@@ -142,23 +142,29 @@ async fn handle_uplink_packet(gateway_id: GatewayId, data: &[u8]) -> Result<()>
142142 let socket = server. get_server_socket ( gateway_id) . await ?;
143143 socket. last_uplink = SystemTime :: now ( ) ;
144144
145+ let span = tracing:: info_span!( "" , addr = %socket. socket. peer_addr( ) . unwrap( ) ) ;
146+ let _enter = span. enter ( ) ;
147+
145148 match packet_type {
146149 PacketType :: PushData => {
150+ info ! ( packet_type = %packet_type, "Sending UDP packet" ) ;
147151 socket. push_data_token = Some ( random_token) ;
148152 socket. socket . send ( data) . await . context ( "Send UDP packet" ) ?;
149- inc_server_udp_sent_count ( & server. host , packet_type) . await ;
153+ inc_server_udp_sent_count ( & server. server , packet_type) . await ;
150154 }
151155 PacketType :: PullData => {
156+ info ! ( packet_type = %packet_type, "Sending UDP packet" ) ;
152157 socket. pull_data_token = Some ( random_token) ;
153158 socket. socket . send ( data) . await . context ( "Send UDP packet" ) ?;
154- inc_server_udp_sent_count ( & server. host , packet_type) . await ;
159+ inc_server_udp_sent_count ( & server. server , packet_type) . await ;
155160 }
156161 PacketType :: TxAck => {
157162 if let Some ( pull_resp_token) = socket. pull_resp_token {
158163 if pull_resp_token == random_token {
164+ info ! ( packet_type = %packet_type, "Sending UDP packet" ) ;
159165 socket. pull_resp_token = None ;
160166 socket. socket . send ( data) . await . context ( "Send UDP packet" ) ?;
161- inc_server_udp_sent_count ( & server. host , packet_type) . await ;
167+ inc_server_udp_sent_count ( & server. server , packet_type) . await ;
162168 }
163169 }
164170 }
@@ -243,12 +249,10 @@ async fn handle_downlink_packet(
243249 }
244250 }
245251 PacketType :: PullAck => {
246- let token = get_random_token ( data) ?;
247- info ! ( token = token, "PULL_DATA acknowledged" ) ;
252+ // TODO: keep ack stats
248253 }
249254 PacketType :: PushAck => {
250- let token = get_random_token ( data) ?;
251- info ! ( token = token, "PUSH_DATA acknowledged" ) ;
255+ // TODO: keep ack stats
252256 }
253257
254258 _ => { }
@@ -271,13 +275,13 @@ async fn handle_pull_resp(
271275}
272276
273277async fn add_server (
274- host : String ,
278+ server : String ,
275279 uplink_only : bool ,
276280 gateway_id_prefixes : Vec < lrwn_filters:: EuiPrefix > ,
277281 downlink_tx : UnboundedSender < ( GatewayId , Vec < u8 > ) > ,
278282) -> Result < ( ) > {
279283 info ! (
280- host = host ,
284+ server = server ,
281285 uplink_only = uplink_only,
282286 gateway_id_prefixes = ?gateway_id_prefixes,
283287 "Adding server"
@@ -289,7 +293,7 @@ async fn add_server(
289293
290294 let mut servers = servers. write ( ) . await ;
291295 servers. push ( Server {
292- host ,
296+ server ,
293297 uplink_only,
294298 gateway_id_prefixes,
295299 downlink_tx,
@@ -316,26 +320,26 @@ async fn cleanup_sockets() {
316320 if duration < Duration :: from_secs ( 60 ) {
317321 true
318322 } else {
319- warn ! ( server = server. host , gateway_id = %k, "Cleaning up inactive socket" ) ;
323+ warn ! ( server = server. server , gateway_id = %k, "Cleaning up inactive socket" ) ;
320324 false
321325 }
322326 } else {
323- warn ! ( server = server. host , gateway_id = %k, "Cleaning up inactive socket" ) ;
327+ warn ! ( server = server. server , gateway_id = %k, "Cleaning up inactive socket" ) ;
324328 false
325329 }
326330 } ) ;
327331 }
328332 }
329333}
330334
331- async fn set_pull_resp_token ( host : & str , gateway_id : GatewayId , token : u16 ) -> Result < ( ) > {
335+ async fn set_pull_resp_token ( srv : & str , gateway_id : GatewayId , token : u16 ) -> Result < ( ) > {
332336 let servers = SERVERS
333337 . get_or_init ( || async { RwLock :: new ( Vec :: new ( ) ) } )
334338 . await ;
335339 let mut servers = servers. write ( ) . await ;
336340
337341 for server in servers. iter_mut ( ) {
338- if server. host . eq ( host ) {
342+ if server. server . eq ( srv ) {
339343 if let Some ( v) = server. sockets . get_mut ( & gateway_id) {
340344 v. pull_resp_token = Some ( token) ;
341345 }
0 commit comments