aboutsummaryrefslogtreecommitdiffstats
path: root/build/external/patches/quicly_0.0.5-vpp/0002-quicly-rtt-time-skew.patch
blob: 40ac027697730f50e390811a37e60098cd48b2cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
diff --git a/lib/quicly.c b/lib/quicly.c
index 95d5f13..200515f 100644
--- a/lib/quicly.c
+++ b/lib/quicly.c
@@ -3551,6 +3551,10 @@ static int handle_ack_frame(quicly_conn_t *conn, struct st_quicly_handle_payload
 
     QUICLY_PROBE(QUICTRACE_RECV_ACK_DELAY, conn, probe_now(), frame.ack_delay);
 
+    /* Detect and fix time skew */
+    if (now < largest_newly_acked.sent_at)
+        now = largest_newly_acked.sent_at;
+
     /* Update loss detection engine on ack. The function uses ack_delay only when the largest_newly_acked is also the largest acked
      * so far. So, it does not matter if the ack_delay being passed in does not apply to the largest_newly_acked. */
     quicly_loss_on_ack_received(&conn->egress.loss, largest_newly_acked.packet_number, now, largest_newly_acked.sent_at,