From fec9716be89a0b004ab2d9c7a2dd8f27365b9a66 Mon Sep 17 00:00:00 2001 From: Jose Celano Date: Tue, 16 Jan 2024 09:50:42 +0000 Subject: [PATCH] feat: [#609] add timeout to UDP tracker requests --- src/servers/udp/server.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/servers/udp/server.rs b/src/servers/udp/server.rs index 22cdf6357..a15226bd2 100644 --- a/src/servers/udp/server.rs +++ b/src/servers/udp/server.rs @@ -20,6 +20,7 @@ use std::io::Cursor; use std::net::SocketAddr; use std::sync::Arc; +use std::time::Duration; use aquatic_udp_protocol::Response; use derive_more::Constructor; @@ -240,9 +241,16 @@ impl Udp { debug!(target: "UDP Tracker", "From: {}", &remote_addr); debug!(target: "UDP Tracker", "Payload: {:?}", payload); - let response = handle_packet(remote_addr, payload, &tracker).await; + let response_fut = handle_packet(remote_addr, payload, &tracker); - Udp::send_response(socket_clone, remote_addr, response).await; + match tokio::time::timeout(Duration::from_secs(5), response_fut).await { + Ok(response) => { + Udp::send_response(socket_clone, remote_addr, response).await; + } + Err(_) => { + error!("Timeout occurred while processing the UDP request."); + } + } } Err(err) => { error!("Error reading UDP datagram from socket. Error: {:?}", err);