From 449ce0c0ba5afb6b1f5f384aa7e46afad3914ead Mon Sep 17 00:00:00 2001 From: Maple Nebel Date: Sat, 8 Nov 2025 13:41:41 +0000 Subject: [PATCH] add closing a connection if it becomes unreliable/doesnt ack a packet 5 times --- prudpv1/src/prudp/socket.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/prudpv1/src/prudp/socket.rs b/prudpv1/src/prudp/socket.rs index d85948c..9307007 100644 --- a/prudpv1/src/prudp/socket.rs +++ b/prudpv1/src/prudp/socket.rs @@ -7,7 +7,7 @@ use crate::prudp::packet::{PRUDPV1Header, PRUDPV1Packet, TypesFlags}; use rnex_core::prudp::virtual_port::VirtualPort; use rnex_core::prudp::socket_addr::PRUDPSockAddr; use async_trait::async_trait; -use log::info; +use log::{info, warn}; use log::error; use rc4::StreamCipher; use v_byte_helpers::ReadExtensions; @@ -347,6 +347,11 @@ impl InternalSocket { } for (send_time, packet) in &conn.unacknowleged_packets{ + if *send_time < (Instant::now() - Duration::from_millis(3000)){ + warn!("failed to resend packet 5 times and never got response, destroying connection"); + conn.close_connection().await; + break; + } if *send_time < (Instant::now() - Duration::from_millis(500)){ info!("unacknowledged packet sat arround for more than 500 ms, resending"); conn.send_raw_packet(packet).await;