]> git.kaiwu.me - haproxy.git/commit
BUG/MINOR: mux-h1: Be sure to commit htx changes in the demux buffer
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 8 Jul 2022 07:02:59 +0000 (09:02 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 8 Jul 2022 14:37:31 +0000 (16:37 +0200)
commit5966e4064156a10bca3a3051eb0a19b40c1ad0ed
treeff3b9bc4b0ab8ef93cfe901a3568d13ed53cfe6f
parenta46a99e98c6b3c45f809d66035a91f66115012e1
BUG/MINOR: mux-h1: Be sure to commit htx changes in the demux buffer

When a buffer area is casted to an htx message, depending on the method
used, the underlying buffer may be updated or not. The htxbuf() function
does not change the buffer state. We assume the buffer was already prepared
to store an htx message. htx_from_buf() on its side, updates the
buffer. With the first function, we only need to commit changes to the
underlying buffer if the htx message is changed.  With last one, we must
always commit the changes. The idea is to be sure to keep non-empty HTX
messages while an empty message must be lead to an empty buffer after
commit.

All that said because in h1_process_demux(), the changes is not always
committed as expected. When the demux is blocked, we just leave the
function. So it is possible to have an empty htx message stored in a buffer
that appears non-empty. It is not critical, but the buffer cannot be
released in this state. And we should always release an empty buffer.

This patch must be backported as far as 2.4.
src/mux_h1.c