From: Frederic Lecaille Date: Wed, 25 Jun 2025 14:04:28 +0000 (+0200) Subject: MINOR: quic-be: Allow sending 1200 bytes Initial datagrams X-Git-Tag: v3.3-dev2~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8a25fcd36e0f63abe2d811c6bd33b0ac8869f9ad;p=thirdparty%2Fhaproxy.git MINOR: quic-be: Allow sending 1200 bytes Initial datagrams This easy to understand patch is not intrusive at all and cannot break the QUIC listeners. The QUIC client MUST always pad its datagrams with Initial packets. A "!l" (not a listener) test OR'ed with the existing ones is added to satisfy the condition to allow the build of such datagrams. --- diff --git a/src/quic_tx.c b/src/quic_tx.c index 342a2dc58..8ce67bbf6 100644 --- a/src/quic_tx.c +++ b/src/quic_tx.c @@ -679,7 +679,7 @@ static int qc_prep_pkts(struct quic_conn *qc, struct buffer *buf, * datagrams carrying ack-eliciting Initial packets to at least the * smallest allowed maximum datagram size of 1200 bytes. */ - if (qel == qc->iel && (!LIST_ISEMPTY(frms) || probe)) { + if (qel == qc->iel && (!l || !LIST_ISEMPTY(frms) || probe)) { /* Ensure that no ack-eliciting packets are sent into too small datagrams */ if (end - pos < QUIC_INITIAL_PACKET_MINLEN) { TRACE_PROTO("No more enough room to build an Initial packet", @@ -704,7 +704,7 @@ static int qc_prep_pkts(struct quic_conn *qc, struct buffer *buf, */ cur_pkt = qc_build_pkt(&pos, end, qel, tls_ctx, frms, qc, ver, dglen, pkt_type, must_ack, - padding && !next_qel && (!probe || !LIST_ISEMPTY(frms)), + padding && (!l || (!next_qel && (!probe || !LIST_ISEMPTY(frms)))), probe, cc, &err); if (!cur_pkt) { switch (err) {