diff --git a/src/network/async_main.rs b/src/network/async_main.rs index b06be28..b83634f 100644 --- a/src/network/async_main.rs +++ b/src/network/async_main.rs @@ -315,10 +315,10 @@ async fn run_edge_loop(eee: &'static Node, cancel: CancellationToken) { let cancel2 = cancel.clone(); let cancel = cancel.clone(); tokio::spawn(async move { - loop_socket_v4(eee, &eee.udp_sock_v4, cancel).await; + loop_socket_v4(eee, &eee.udp_sock_v4, cancel, false).await; }); tokio::spawn(async move { - loop_socket_v4(eee, &eee.udp_sock_multicast, cancel2).await; + loop_socket_v4(eee, &eee.udp_sock_multicast, cancel2, true).await; }); } @@ -349,16 +349,23 @@ async fn send_stun_request(eee: &Node) { } } -async fn loop_socket_v4(eee: &Node, socket: &Socket, cancel: CancellationToken) { +async fn loop_socket_v4( + eee: &Node, + socket: &Socket, + cancel: CancellationToken, + is_multicast_sock: bool, +) { debug!("loop sock v4"); loop { tokio::select! { _ = cancel.cancelled() => { break; } - _ = read_and_parse_packet(eee, socket,Some(Duration::from_secs(10))) => { } + _ = read_and_parse_packet(eee, socket, Some(Duration::from_secs(10)), is_multicast_sock) => { } _ = tokio::time::sleep(Duration::from_secs(10)) => { - send_stun_request(eee).await; + if !is_multicast_sock { + send_stun_request(eee).await; + } /* let req = SdlStunRequest { cookie: 0, diff --git a/src/network/packet.rs b/src/network/packet.rs index 0f65cdf..2e08704 100644 --- a/src/network/packet.rs +++ b/src/network/packet.rs @@ -29,6 +29,7 @@ pub async fn read_and_parse_packet( eee: &Node, sock: &Socket, timeout: Option, + is_multicast_sock: bool, // cancel: CancellationToken, ) -> Result<()> { let mut buf = vec![0; 3000]; @@ -59,6 +60,14 @@ pub async fn read_and_parse_packet( } Ok((size, from)) => { // size > 0 + + if is_multicast_sock { + println!( + "xxxx got packet from multicast sock from {}", + from.to_string() + ); + } + buf.truncate(size); match handle_packet(eee, from, &buf).await { Ok(_) => {}