From 235a4af0a9af06e43cf95c9e80638edbd4e2c3c4 Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Thu, 11 Jun 2026 09:38:05 +0200 Subject: [PATCH] check number of peers (#1059) --- src/ui/netplay.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ui/netplay.rs b/src/ui/netplay.rs index 26c20a59..d9401c3c 100644 --- a/src/ui/netplay.rs +++ b/src/ui/netplay.rs @@ -54,6 +54,7 @@ enum PingType { struct NetplayPingMessage { message_type: PingType, timestamp: u128, + num_of_peers: usize, } fn select_rom(weak: slint::Weak, rom_dir: slint::SharedString) { @@ -414,6 +415,7 @@ fn update_ping( let ping_message = NetplayPingMessage { message_type: PingType::Ping, timestamp: now, + num_of_peers: socket.connected_peers().count(), }; let data = postcard::to_stdvec(&ping_message).unwrap(); let _ = write.send((peer, data.into())).await; @@ -461,6 +463,7 @@ fn update_ping( let pong_message = NetplayPingMessage { message_type: PingType::Pong, timestamp: message.timestamp, + num_of_peers: message.num_of_peers, }; let data = postcard::to_stdvec(&pong_message).unwrap(); let _ = write_clone.send((peer, data.into())).await; @@ -472,8 +475,8 @@ fn update_ping( .as_millis(); let ping = (now - message.timestamp) / 2; // calculate one-way latency pings.push(ping); - if pings.len() > 12 { - // once we have at least 12 samples, remove the highest 2 and return the next highest + if pings.len() > message.num_of_peers * 4 { + // once we have enough samples, remove the highest 2 and return the next highest pings.sort(); pings.truncate(pings.len() - 2); let ping = *pings.last().unwrap();