Skip to content
This repository was archived by the owner on Aug 23, 2022. It is now read-only.

Commit d168001

Browse files
committed
Also handle case where seqnums around u16::MAX-16
1 parent e229a19 commit d168001

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

src/transport_feedbacks/transport_layer_nack/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -230,12 +230,13 @@ pub fn nack_pairs_from_sequence_numbers(seq_nos: &[u16]) -> Vec<NackPair> {
230230
if seq == nack_pair.packet_id {
231231
continue;
232232
}
233-
if seq <= nack_pair.packet_id || seq - nack_pair.packet_id > 16 {
233+
if seq <= nack_pair.packet_id || seq > nack_pair.packet_id.saturating_add(16) {
234234
pairs.push(nack_pair.clone());
235235
nack_pair.packet_id = seq;
236236
continue;
237237
}
238238

239+
// Subtraction here is safe because the above checks that seqnum > nack_pair.packet_id.
239240
nack_pair.lost_packets |= 1 << (seq - nack_pair.packet_id - 1);
240241
}
241242

src/transport_feedbacks/transport_layer_nack/transport_layer_nack_test.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ fn test_transport_layer_nack_pair_generation() {
305305
),
306306
(
307307
"Multiple Ranges, Multiple NACKPair (with rollover)",
308-
vec![100, 117, 65535, 0, 1, 99],
308+
vec![100, 117, 65534, 65535, 0, 1, 99],
309309
vec![
310310
NackPair {
311311
packet_id: 100,
@@ -316,8 +316,8 @@ fn test_transport_layer_nack_pair_generation() {
316316
lost_packets: 0,
317317
},
318318
NackPair {
319-
packet_id: 65535,
320-
lost_packets: 0,
319+
packet_id: 65534,
320+
lost_packets: 1,
321321
},
322322
NackPair {
323323
packet_id: 0,

0 commit comments

Comments
 (0)