From: Frédéric Lécaille Date: Mon, 8 Aug 2022 19:10:58 +0000 (+0200) Subject: MINOR: quic: Replace pool_zalloc() by pool_malloc() for fake datagrams X-Git-Tag: v2.7-dev4~77 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba19acd822011a97a72da7eb71215329774f0977;p=thirdparty%2Fhaproxy.git MINOR: quic: Replace pool_zalloc() by pool_malloc() for fake datagrams These fake datagrams are only used by the low level I/O handler. They are not provided to the "by connection" datagram handlers. This is why they are not MT_LIST_APPEND()ed to the listner RX buffer list (see &quic_dghdlrs[cid_tid].dgrams in quic_lstnr_dgram_dispatch(). Replace the call to pool_zalloc() to by the lighter call to pool_malloc() and initialize only the ->buf and ->length members. This is safe because only these fields are inspected by the low level I/O handler. --- diff --git a/src/quic_sock.c b/src/quic_sock.c index b7cffc9d23..e74e8893dc 100644 --- a/src/quic_sock.c +++ b/src/quic_sock.c @@ -317,7 +317,7 @@ void quic_sock_fd_iocb(int fd) struct quic_dgram *dgram; /* Do no mark as full, and do not try to consume it - * if the contiguous remmaining space is not at the end + * if the contiguous remaining space is not at the end */ if (b_tail(buf) + cspace < b_wrap(buf)) goto out; @@ -325,11 +325,16 @@ void quic_sock_fd_iocb(int fd) /* Allocate a fake datagram, without data to locate * the end of the RX buffer (required during purging). */ - dgram = pool_zalloc(pool_head_quic_dgram); + dgram = pool_alloc(pool_head_quic_dgram); if (!dgram) goto out; + /* Initialize only the useful members of this fake datagram. */ + dgram->buf = NULL; dgram->len = cspace; + /* Append this datagram only to the RX buffer list. It will + * not be treated by any datagram handler. + */ LIST_APPEND(&rxbuf->dgrams, &dgram->list); /* Consume the remaining space */