From e25fce03ebe3307bc104d1f81356108e271d2bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= Date: Mon, 20 Mar 2023 17:23:19 +0100 Subject: [PATCH] BUG/MINOR: quic: Dysfunctional 01RTT packet number space probing This bug arrived with this commit: "MINOR: quic: implement qc_notify_send()". The ->tx.pto_probe variable was no more set when qc_processt_timer() the timer task for the connection responsible of detecting packet loss and probing upon PTO expiration leading to interrupted stream transfers. This was revealed by blackhole interop failed tests where one could see that qc_process_timer() was wakeup without traces as follows in the log file: "needs to probe 01RTT packet number space" Must be backported to 2.7 and to 2.6 if the commit mentionned above is backported to 2.6 in the meantime. --- src/quic_conn.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/quic_conn.c b/src/quic_conn.c index f8c7816ec..c67ae6d54 100644 --- a/src/quic_conn.c +++ b/src/quic_conn.c @@ -5158,7 +5158,10 @@ struct task *qc_process_timer(struct task *task, void *ctx, unsigned int state) if (qc->path->in_flight) { pktns = quic_pto_pktns(qc, qc->state >= QUIC_HS_ST_CONFIRMED, NULL); - if (!qc_notify_send(qc)) { + if (qc_notify_send(qc)) { + pktns->tx.pto_probe = QUIC_MAX_NB_PTO_DGRAMS; + } + else { if (pktns == &qc->pktns[QUIC_TLS_PKTNS_INITIAL]) { if (qc_may_probe_ipktns(qc)) { qc->flags |= QUIC_FL_CONN_RETRANS_NEEDED;