summaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp_input.c
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2018-10-01 18:31:02 -0700
committerMarco Varlese <marco.varlese@suse.de>2018-10-02 07:07:02 +0000
commitca09d0730974effd53b436871f3e69c8bb8b1114 (patch)
treedfdfd6f4d532f71c79eb1c1b53de9a058ea39072 /src/vnet/tcp/tcp_input.c
parent0a4e0063f79490f134150a0cefe33600733f7d94 (diff)
tcp: accept fins if in recovery
Change-Id: I0c9c055fcc3d681c4032228a90cc81f484e200f0 Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/tcp/tcp_input.c')
-rw-r--r--src/vnet/tcp/tcp_input.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c
index d297ee7ed3e..10f50fefc09 100644
--- a/src/vnet/tcp/tcp_input.c
+++ b/src/vnet/tcp/tcp_input.c
@@ -1401,7 +1401,9 @@ process_ack:
if (!tcp_in_cong_recovery (tc))
return 0;
*error = TCP_ERROR_ACK_DUP;
- return vnet_buffer (b)->tcp.data_len ? 0 : -1;
+ if (vnet_buffer (b)->tcp.data_len || tcp_is_fin (th))
+ return 0;
+ return -1;
}
/*