From 81cb8e4092991d3fd1e24f0862c12548a2d4c714 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Tue, 22 Oct 2019 19:44:45 -0700 Subject: tcp: fix sack retransmit beyond snd_nxt Type: fix Ensure that sack retransmit logic does not try to inadvertently send new data. Change-Id: Idfda19643577d9c1b58e2af8d8283cabfbaf98e6 Signed-off-by: Florin Coras --- src/vnet/tcp/tcp_input.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/vnet/tcp/tcp_input.c') diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c index 10f96fa7b59..744c5bc01c2 100755 --- a/src/vnet/tcp/tcp_input.c +++ b/src/vnet/tcp/tcp_input.c @@ -890,6 +890,12 @@ scoreboard_next_rxt_hole (sack_scoreboard_t * sb, /* Rule (3): if hole not lost */ else if (seq_lt (hole->start, sb->high_sacked)) { + /* And we didn't already retransmit it */ + if (seq_leq (hole->end, sb->high_rxt)) + { + sb->cur_rxt_hole = TCP_INVALID_SACK_HOLE_INDEX; + return 0; + } *snd_limited = 0; sb->cur_rxt_hole = scoreboard_hole_index (sb, hole); } -- cgit 1.2.3-korg