]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: Replace pool_zalloc() by pool_malloc() for fake datagrams
authorFrédéric Lécaille <flecaille@haproxy.com>
Mon, 8 Aug 2022 19:10:58 +0000 (21:10 +0200)
committerFrédéric Lécaille <flecaille@haproxy.com>
Mon, 8 Aug 2022 19:10:58 +0000 (21:10 +0200)
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.

src/quic_sock.c

index b7cffc9d23673072c0f0a08eb4193e08d7ab2d40..e74e8893dc50bc46fdbfa2729654e3e01268ace6 100644 (file)
@@ -317,7 +317,7 @@ void quic_sock_fd_iocb(int fd)
                struct quic_dgram *dgram;
 
                /* Do no mark <buf> 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 */