Do not track lost_packets twice

The number of lost packets is already tracked as path stats, there is
no need to duplicate it on the connection struct itself.  While access
was only ever in tests, the field would still be present in release
builds I think.
This commit is contained in:
Floris Bruynooghe
2025-07-18 17:26:07 +02:00
committed by Dirkjan Ochtman
parent 471306894d
commit f31cd1edb9
2 changed files with 9 additions and 19 deletions
-10
View File
@@ -167,8 +167,6 @@ pub struct Connection {
/// The value that the server included in the Source Connection ID field of a Retry packet, if
/// one was received
retry_src_cid: Option<ConnectionId>,
/// Total number of outgoing packets that have been deemed lost
lost_packets: u64,
events: VecDeque<Event>,
endpoint_events: VecDeque<EndpointEventInner>,
/// Whether the spin bit is in use for this connection
@@ -307,7 +305,6 @@ impl Connection {
orig_rem_cid: rem_cid,
initial_dst_cid: init_cid,
retry_src_cid: None,
lost_packets: 0,
events: VecDeque::new(),
endpoint_events: VecDeque::new(),
spin_enabled: config.allow_spin && rng.random_ratio(7, 8),
@@ -1800,7 +1797,6 @@ impl Connection {
if let Some(largest_lost) = lost_packets.last().cloned() {
let old_bytes_in_flight = self.path.in_flight.bytes;
let largest_lost_sent = self.spaces[pn_space].sent_packets[&largest_lost].time_sent;
self.lost_packets += lost_packets.len() as u64;
self.stats.path.lost_packets += lost_packets.len() as u64;
self.stats.path.lost_bytes += size_of_lost_packets;
trace!(
@@ -3668,12 +3664,6 @@ impl Connection {
.map_or(true, |(timer, _)| timer == Timer::Idle)
}
/// Total number of outgoing packets that have been deemed lost
#[cfg(test)]
pub(crate) fn lost_packets(&self) -> u64 {
self.lost_packets
}
/// Whether explicit congestion notification is in use on outgoing packets.
#[cfg(test)]
pub(crate) fn using_ecn(&self) -> bool {
+9 -9
View File
@@ -596,7 +596,7 @@ fn zero_rtt_happypath() {
Ok(Some(chunk)) if chunk.offset == 0 && chunk.bytes == MSG
);
let _ = chunks.finalize();
assert_eq!(pair.client_conn_mut(client_ch).lost_packets(), 0);
assert_eq!(pair.client_conn_mut(client_ch).stats().path.lost_packets, 0);
}
#[test]
@@ -671,7 +671,7 @@ fn zero_rtt_rejection() {
let mut chunks = recv.read(false).unwrap();
assert_eq!(chunks.next(usize::MAX), Err(ReadError::Blocked));
let _ = chunks.finalize();
assert_eq!(pair.client_conn_mut(client_ch).lost_packets(), 0);
assert_eq!(pair.client_conn_mut(client_ch).stats().path.lost_packets, 0);
}
fn test_zero_rtt_incoming_limit<F: FnOnce(&mut ServerConfig)>(configure_server: F) {
@@ -762,7 +762,7 @@ fn test_zero_rtt_incoming_limit<F: FnOnce(&mut ServerConfig)>(configure_server:
assert_eq!(offset, CLIENT_WRITES);
let _ = chunks.finalize();
assert_eq!(
pair.client_conn_mut(client_ch).lost_packets(),
pair.client_conn_mut(client_ch).stats().path.lost_packets,
EXPECTED_DROPPED
);
}
@@ -1011,8 +1011,8 @@ fn key_update_simple() {
);
let _ = chunks.finalize();
assert_eq!(pair.client_conn_mut(client_ch).lost_packets(), 0);
assert_eq!(pair.server_conn_mut(server_ch).lost_packets(), 0);
assert_eq!(pair.client_conn_mut(client_ch).stats().path.lost_packets, 0);
assert_eq!(pair.server_conn_mut(server_ch).stats().path.lost_packets, 0);
}
#[test]
@@ -1044,7 +1044,7 @@ fn key_update_reordered() {
pair.client.finish_delay();
pair.drive();
assert_eq!(pair.client_conn_mut(client_ch).lost_packets(), 0);
assert_eq!(pair.client_conn_mut(client_ch).stats().path.lost_packets, 0);
assert_matches!(
pair.server_conn_mut(server_ch).poll(),
Some(Event::Stream(StreamEvent::Opened { dir: Dir::Bi }))
@@ -1059,8 +1059,8 @@ fn key_update_reordered() {
assert_eq!(buf2.bytes, MSG2);
let _ = chunks.finalize();
assert_eq!(pair.client_conn_mut(client_ch).lost_packets(), 0);
assert_eq!(pair.server_conn_mut(server_ch).lost_packets(), 0);
assert_eq!(pair.client_conn_mut(client_ch).stats().path.lost_packets, 0);
assert_eq!(pair.server_conn_mut(server_ch).stats().path.lost_packets, 0);
}
#[test]
@@ -1699,7 +1699,7 @@ fn handshake_1rtt_handling() {
pair.drive();
assert!(pair.client_conn_mut(client_ch).lost_packets() != 0);
assert!(pair.client_conn_mut(client_ch).stats().path.lost_packets != 0);
let mut recv = pair.server_recv(server_ch, s);
let mut chunks = recv.read(false).unwrap();
assert_matches!(