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.
This commit is contained in:
Frédéric Lécaille 2022-01-28 13:10:24 +01:00 committed by Amaury Denoyelle
parent dc36404c36
commit 1712b1df59

View File

@ -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)