1
0
mirror of https://passt.top/passt synced 2025-01-03 03:15:22 +00:00

tcp: Reset ACK_TO_TAP_DUE flag whenever an ACK isn't needed anymore

We enter the timer handler with the ACK_TO_TAP_DUE flag, call
tcp_prepare_flags() with ACK_IF_NEEDED, and realise that we
acknowledged everything meanwhile, so we return early, but we also
need to reset that flag to avoid unnecessarily scheduling the timer
over and over again until more pending data appears.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2024-11-16 11:42:02 +01:00
parent 6e1e44293e
commit 8ae00f8d5d

4
tcp.c
View File

@ -1235,8 +1235,10 @@ int tcp_prepare_flags(const struct ctx *c, struct tcp_tap_conn *conn,
int s = conn->sock;
if (SEQ_GE(conn->seq_ack_to_tap, conn->seq_from_tap) &&
!flags && conn->wnd_to_tap)
!flags && conn->wnd_to_tap) {
conn_flag(c, conn, ~ACK_TO_TAP_DUE);
return 0;
}
if (getsockopt(s, SOL_TCP, TCP_INFO, &tinfo, &sl)) {
conn_event(c, conn, CLOSED);