OPTIM: h3: skip buf realign if no trailer to encode
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 26 Jan 2023 16:49:21 +0000 (17:49 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 30 Jan 2023 14:39:41 +0000 (15:39 +0100)
commit4be54350145e4e5742e90dcc368cc6ce8c9ba8f2
tree28bd4bfe2a7164d7d71d5e810f3a8b56fc1a6805
parent224ba5cffe6d1e2e1be5968dfc4ad7199f3d5d92
OPTIM: h3: skip buf realign if no trailer to encode

h3_resp_trailers_send() may be called due to an HTX EOT block present
without preceeding HTX TRAILER block. In this case, no HEADERS frame
will be generated by H3 layer and MUX will emit an empty STREAM frame
with FIN set.

However, before skipping these, some operations are conducted on qcs
buffer to realign it and try to encode the QPACK field section line in a
buffer copy. These operation are thus unneeded if no trailer is
generated. Even worse, the function will fail if there is not enough
space in the buffer for the superfluous QPACK section line.

To improve this situation, this patch adds an early goto statement to
skip most operations in h3_resp_trailers_send() if no HTX trailer block
is found.

This patch is related to github issue #2006.

This should be backported up to 2.7.
src/h3.c