From 9b2287a3f03bec1548c79ac4f569e1c3fd2ea435 Mon Sep 17 00:00:00 2001 From: Maple Nebel Date: Sun, 19 Jul 2026 00:28:07 +0200 Subject: [PATCH] adjustments to aggregate acknowledgement --- prudpv1/src/prudp/socket.rs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/prudpv1/src/prudp/socket.rs b/prudpv1/src/prudp/socket.rs index a051033..0059882 100644 --- a/prudpv1/src/prudp/socket.rs +++ b/prudpv1/src/prudp/socket.rs @@ -705,19 +705,7 @@ impl AnyInternalSocket for InternalSocket { let conn = &**conn; let mut conn = conn.lock().await; - if conn.supported_function_version == 1 { - let mut collected_ids: Vec = Vec::new(); - let mut cursor = Cursor::new(&packet.payload); - - while let Ok(v) = read_u16(&mut cursor) { - collected_ids.push(v); - } - - conn.unacknowleged_packets.retain_mut(|(_, up)| { - !(collected_ids.iter().any(|id| up.header.sequence_id == *id) - || up.header.sequence_id <= packet.header.sequence_id) - }); - } else { + if packet.header.substream_id == 1 { let mut collected_ids: Vec = Vec::new(); let mut cursor = Cursor::new(&packet.payload); @@ -744,10 +732,22 @@ impl AnyInternalSocket for InternalSocket { collected_ids.push(additional_sequence_id); } - conn.unacknowleged_packets.retain_mut(|(_, up)| { + conn.unacknowleged_packets.retain(|(_, up)| { !(collected_ids.iter().any(|id| up.header.sequence_id == *id) || up.header.sequence_id <= sequence_id) }); + } else { + let mut collected_ids: Vec = Vec::new(); + let mut cursor = Cursor::new(&packet.payload); + + while let Ok(v) = read_u16(&mut cursor) { + collected_ids.push(v); + } + + conn.unacknowleged_packets.retain(|(_, up)| { + !(collected_ids.iter().any(|id| up.header.sequence_id == *id) + || up.header.sequence_id <= packet.header.sequence_id) + }); } } else { error!("non connection acknowledgement packet on nonexistent connection...")