diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2021-07-26 14:25:16 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2021-07-26 14:25:16 +0200 |
commit | 0279ec8eaebf0d0ae6d871f44c27db67904b8872 (patch) | |
tree | f0e21c80f11a75906e219024e8de9e2a7f3570c8 /tcp.c | |
parent | 74677bddb2b275adb7d57bb5f1abf8ae28f10a51 (diff) | |
download | passt-0279ec8eaebf0d0ae6d871f44c27db67904b8872.tar passt-0279ec8eaebf0d0ae6d871f44c27db67904b8872.tar.gz passt-0279ec8eaebf0d0ae6d871f44c27db67904b8872.tar.bz2 passt-0279ec8eaebf0d0ae6d871f44c27db67904b8872.tar.lz passt-0279ec8eaebf0d0ae6d871f44c27db67904b8872.tar.xz passt-0279ec8eaebf0d0ae6d871f44c27db67904b8872.tar.zst passt-0279ec8eaebf0d0ae6d871f44c27db67904b8872.zip |
tcp: Fix re-send mechanism to tap on ACK timeout
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp.c')
-rw-r--r-- | tcp.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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); } } |