From: Frédéric Lécaille Date: Fri, 28 Jan 2022 12:10:24 +0000 (+0100) Subject: MINOR: quic: Wrong RX buffer tail handling when no more contiguous data X-Git-Tag: v2.6-dev1~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1712b1df595eb66b1234f2f089208b408e18ba07;p=thirdparty%2Fhaproxy.git MINOR: quic: Wrong RX buffer tail handling when no more contiguous data The producer must know where is the tailing hole in the RX buffer when it purges it from consumed datagram. This is done allocating a fake datagram with the remaining number of bytes which cannot be produced at the tail of the RX buffer as length. --- diff --git a/src/quic_sock.c b/src/quic_sock.c index 37e7f1b7c0..5533b01d5e 100644 --- a/src/quic_sock.c +++ b/src/quic_sock.c @@ -209,6 +209,17 @@ void quic_sock_fd_iocb(int fd) max_sz = params->max_udp_payload_size; cspace = b_contig_space(buf); if (cspace < max_sz) { + struct quic_dgram *dgram; + + /* Allocate a fake datagram, without data to locate + * the end of the RX buffer (required during purging). + */ + dgram = pool_zalloc(pool_head_quic_dgram); + if (!dgram) + goto out; + + dgram->len = cspace; + LIST_APPEND(&rxbuf->dgrams, &dgram->list); /* Consume the remaining space */ b_add(buf, cspace); if (b_contig_space(buf) < max_sz)