Skip to content

Commit bc422d7

Browse files
committed
test(proto): Never allow constructing empty packets
1 parent c2103a1 commit bc422d7

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

‎noq-proto/src/connection/mod.rs‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7432,6 +7432,11 @@ impl SentFrames {
74327432
&& self.retransmits.is_empty(streams)
74337433
}
74347434

7435+
/// Returns whether the packet contains any frames at all
7436+
fn is_empty(&self, streams: &StreamsState) -> bool {
7437+
!self.non_retransmits && self.stream_frames.is_empty() && self.retransmits.is_empty(streams)
7438+
}
7439+
74357440
fn retransmits_mut(&mut self) -> &mut Retransmits {
74367441
self.retransmits.get_or_create()
74377442
}

‎noq-proto/src/connection/packet_builder.rs‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,10 @@ impl<'a, 'b> PacketBuilder<'a, 'b> {
327327
self.buf.len() <= self.buf.datagram_max_offset() - self.tag_len,
328328
"packet exceeds maximum size"
329329
);
330+
debug_assert!(
331+
!self.sent_frames.is_empty(&conn.streams),
332+
"constructed empty packet"
333+
);
330334
let pad = self.buf.len() < self.min_size;
331335
if pad {
332336
let padding = self.min_size - self.buf.len();

0 commit comments

Comments
 (0)