summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2020-11-06 22:02:48 +0000
committergVisor bot <gvisor-bot@google.com>2020-11-06 22:02:48 +0000
commitac5f800b3971e793eba7ae50e0a4b702546fbbdc (patch)
tree373507b802d1c96f344f1ee77aab0059b7408901
parentee435928e3fb01146cf8f749ba0cec94fd75d0e8 (diff)
parent9e82747d62e57ee7498c8f3f54c313917891273a (diff)
Merge release-20201030.0-44-g9e82747d6 (automated)
-rw-r--r--pkg/tcpip/transport/tcp/snd.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/pkg/tcpip/transport/tcp/snd.go b/pkg/tcpip/transport/tcp/snd.go
index 6fa8d63cd..ab5fa4fb7 100644
--- a/pkg/tcpip/transport/tcp/snd.go
+++ b/pkg/tcpip/transport/tcp/snd.go
@@ -1285,6 +1285,10 @@ func (s *sender) checkDuplicateAck(seg *segment) (rtx bool) {
// See: https://tools.ietf.org/html/draft-ietf-tcpm-rack-08#section-7.2
// steps 2 and 3.
func (s *sender) walkSACK(rcvdSeg *segment) {
+ if len(rcvdSeg.parsedOptions.SACKBlocks) == 0 {
+ return
+ }
+
// Sort the SACK blocks. The first block is the most recent unacked
// block. The following blocks can be in arbitrary order.
sackBlocks := make([]header.SACKBlock, len(rcvdSeg.parsedOptions.SACKBlocks))