webrtc/net/dcsctp
Victor Boivie 3f981ee979 dcsctp: Support zero window probing
This is explained in RFC 4960, section 6.1, A.

  ... However, regardless of the value of rwnd (including if it
  is 0), the data sender can always have one DATA chunk in flight to
  the receiver if allowed by cwnd ...  This rule
  allows the sender to probe for a change in rwnd that the sender
  missed due to the SACK's having been lost in transit from the data
  receiver to the data sender.

Before this change, when a receiver has advertised a zero receiver
window size (a_rwnd=0) and a subsequent SACK advertising a non-zero
receiver window was lost, the sender was blocked from sending and since
SACKs are only sent when a DATA chunk is received, it would be
deadlocked. The retransmission timer would fire, but nothing would be
retransmitted (as it respected the zero receiver window).

With this change, when the retransmission timer fires (after RTO), it
would send a single packet with DATA chunk(s) and then SACKs would
eventually be received, with the non-zero receiver window and the socket
would recover.

Bug: chromium:1258225
Change-Id: I1ea62fb3c002150eeada28d3e703dbc09cfd038e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235280
Commit-Queue: Victor Boivie <boivie@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35215}
2021-10-15 09:08:24 +00:00
..
common Move StrongAlias to rtc_base 2021-09-21 15:17:26 +00:00
fuzzers dcsctp: Add public API for BufferedAmountLow 2021-05-27 15:27:27 +00:00
packet Move StrongAlias to rtc_base 2021-09-21 15:17:26 +00:00
public dcsctp: Detect the peer SCTP implementation 2021-09-28 05:10:45 +00:00
rx dcsctp: Fixed minor typo 2021-10-13 10:28:50 +00:00
socket dcsctp: Avoid integer overflow in HEARTBEAT-ACK v2 2021-10-08 11:06:11 +00:00
testing Enable GN check on //net. 2021-05-03 14:23:09 +00:00
timer Move StrongAlias to rtc_base 2021-09-21 15:17:26 +00:00
tx dcsctp: Support zero window probing 2021-10-15 09:08:24 +00:00
BUILD.gn dcsctp: Add socket fuzzer helper 2021-05-12 15:06:17 +00:00
OWNERS dcsctp: Add OWNERS file 2021-04-20 10:42:58 +00:00