quic: fix quicly rtt time skew 71/23171/2
authorDave Wallace <dwallacelf@gmail.com>
Fri, 1 Nov 2019 18:41:29 +0000 (14:41 -0400)
committerFlorin Coras <florin.coras@gmail.com>
Mon, 4 Nov 2019 22:46:34 +0000 (22:46 +0000)
- This patch to quicly fixes an intermittent failure
  in the rtt calculation when there is a time skew

Type: fix

Change-Id: If89c47401ee75c88f0eb65ae888b6914695b2aec
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
build/external/patches/quicly_0.0.5-vpp/0002-quicly-rtt-time-skew.patch [new file with mode: 0644]

diff --git a/build/external/patches/quicly_0.0.5-vpp/0002-quicly-rtt-time-skew.patch b/build/external/patches/quicly_0.0.5-vpp/0002-quicly-rtt-time-skew.patch
new file mode 100644 (file)
index 0000000..40ac027
--- /dev/null
@@ -0,0 +1,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,