aboutgitcodebugslistschat
path: root/tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'tcp.c')
-rw-r--r--tcp.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/tcp.c b/tcp.c
index bbdee60..056e917 100644
--- a/tcp.c
+++ b/tcp.c
@@ -1610,10 +1610,12 @@ out:
static void tcp_update_seqack_from_tap(const struct ctx *c,
struct tcp_tap_conn *conn, uint32_t seq)
{
+ if (seq == conn->seq_to_tap)
+ conn_flag(c, conn, ~ACK_FROM_TAP_DUE);
+
if (SEQ_GT(seq, conn->seq_ack_from_tap)) {
- if (seq == conn->seq_to_tap)
- conn_flag(c, conn, ~ACK_FROM_TAP_DUE);
- else
+ /* Forward progress, but more data to acknowledge: reschedule */
+ if (SEQ_LT(seq, conn->seq_to_tap))
conn_flag(c, conn, ACK_FROM_TAP_DUE);
conn->retrans = 0;