From: Frédéric Lécaille Date: Mon, 20 Mar 2023 16:23:19 +0000 (+0100) Subject: BUG/MINOR: quic: Dysfunctional 01RTT packet number space probing X-Git-Tag: v2.8-dev6~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e25fce03ebe3307bc104d1f81356108e271d2bc3;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/quic_conn.c b/src/quic_conn.c index f8c7816ec8..c67ae6d54a 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;