in dc/s2n-quic-dc/src/stream/send/worker.rs [99:137]
fn apply<Sub, C>(&self, initial: &Self, shared: &shared::Shared<Sub, C>)
where
Sub: event::Subscriber,
C: Clock,
{
if initial.flow_offset < self.flow_offset {
shared.sender.flow.release(self.flow_offset);
} else if initial.has_pending_retransmissions && !self.has_pending_retransmissions {
// we were waiting to clear out our retransmission queue before giving the application
// more flow credits
shared.sender.flow.release_max(self.flow_offset);
}
if initial.send_quantum != self.send_quantum {
let send_quantum = (self.send_quantum as u64).div_ceil(self.max_datagram_size as u64);
let send_quantum = send_quantum.try_into().unwrap_or(u8::MAX);
shared
.sender
.path
.update_info(self.ecn, send_quantum, self.max_datagram_size);
}
if initial.next_expected_control_packet < self.next_expected_control_packet {
shared
.sender
.path
.set_next_expected_control_packet(self.next_expected_control_packet);
}
if initial.bandwidth != self.bandwidth {
shared.sender.set_bandwidth(self.bandwidth);
}
if let Some(error) = self.error {
if initial.error.is_none() {
shared.sender.flow.set_error(error);
}
}
}