@@ -9,7 +9,7 @@ use rand::Rng;
99use rustc_hash:: FxHashSet ;
1010use tracing:: trace;
1111
12- use super :: assembler:: Assembler ;
12+ use super :: { assembler:: Assembler , datagrams :: DatagramState } ;
1313use crate :: {
1414 Dir , Duration , Instant , SocketAddr , StreamId , TransportError , VarInt , connection:: StreamsState ,
1515 crypto:: Keys , frame, packet:: SpaceId , range_set:: ArrayRangeSet , shared:: IssuedCid ,
@@ -118,6 +118,7 @@ impl PacketSpace {
118118 & mut self ,
119119 request_immediate_ack : bool ,
120120 streams : & StreamsState ,
121+ datagrams : & DatagramState ,
121122 ) {
122123 if self . loss_probes == 0 {
123124 return ;
@@ -129,12 +130,12 @@ impl PacketSpace {
129130 self . immediate_ack_pending = true ;
130131 }
131132
132- // Retransmit the data of the oldest in-flight packet
133- if !self . pending . is_empty ( streams) {
133+ if !self . pending . is_empty ( streams) || !datagrams. outgoing . is_empty ( ) {
134134 // There's real data to send here, no need to make something up
135135 return ;
136136 }
137137
138+ // Retransmit the data of the oldest in-flight packet
138139 for packet in self . sent_packets . values_mut ( ) {
139140 if !packet. retransmits . is_empty ( streams) {
140141 // Remove retransmitted data from the old packet so we don't end up retransmitting
0 commit comments