From 0279ec8eaebf0d0ae6d871f44c27db67904b8872 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Mon, 26 Jul 2021 14:25:16 +0200 Subject: [PATCH] tcp: Fix re-send mechanism to tap on ACK timeout Signed-off-by: Stefano Brivio --- tcp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tcp.c b/tcp.c index 4cba4b8..1a914c9 100644 --- a/tcp.c +++ b/tcp.c @@ -2652,7 +2652,7 @@ static void tcp_timer_one(struct ctx *c, struct tcp_tap_conn *conn, struct timespec *ts) { int ack_tap_ms = timespec_diff_ms(ts, &conn->ts_ack_tap); - int sock_ms = timespec_diff_ms(ts, &conn->ts_tap); + int sock_ms = timespec_diff_ms(ts, &conn->ts_sock); int tap_ms = timespec_diff_ms(ts, &conn->ts_tap); switch (conn->state) { @@ -2693,7 +2693,8 @@ static void tcp_timer_one(struct ctx *c, struct tcp_tap_conn *conn, } conn->seq_to_tap = conn->seq_ack_from_tap; - tcp_data_from_sock(c, conn, ts); + if (sock_ms > ACK_TIMEOUT) + tcp_data_from_sock(c, conn, ts); } }