Skip to content

Commit

Permalink
fix: Correctly manage bytes_in_flight during a rebinding event (#1812)
Browse files Browse the repository at this point in the history
* fix: Correctly manage `bytes_in_flight` during a rebinding event

Fixes #1289

* Update comment. Remove incorrect `clippy::unused_self` while I'm here.
  • Loading branch information
larseggert authored Apr 11, 2024
1 parent b3cf65f commit c0ca26d
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions neqo-transport/src/cc/classic_cc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,9 @@ impl<T: WindowAdjustment> CongestionControl for ClassicCongestionControl<T> {
if pkt.pn < self.first_app_limited {
is_app_limited = false;
}
assert!(self.bytes_in_flight >= pkt.size);
self.bytes_in_flight -= pkt.size;
// BIF is set to 0 on a path change, but in case that was because of a simple rebinding
// event, we may still get ACKs for packets sent before the rebinding.
self.bytes_in_flight = self.bytes_in_flight.saturating_sub(pkt.size);

if !self.after_recovery_start(pkt) {
// Do not increase congestion window for packets sent before
Expand Down Expand Up @@ -271,8 +272,9 @@ impl<T: WindowAdjustment> CongestionControl for ClassicCongestionControl<T> {
pkt.pn,
pkt.size
);
assert!(self.bytes_in_flight >= pkt.size);
self.bytes_in_flight -= pkt.size;
// BIF is set to 0 on a path change, but in case that was because of a simple rebinding
// event, we may still declare packets lost that were sent before the rebinding.
self.bytes_in_flight = self.bytes_in_flight.saturating_sub(pkt.size);
}
qlog::metrics_updated(
&mut self.qlog,
Expand Down Expand Up @@ -516,7 +518,6 @@ impl<T: WindowAdjustment> ClassicCongestionControl<T> {
true
}

#[allow(clippy::unused_self)]
fn app_limited(&self) -> bool {
if self.bytes_in_flight >= self.congestion_window {
false
Expand Down

0 comments on commit c0ca26d

Please sign in to comment.