From bc586b4138d5219875a40b0107ee57120c76bef9 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 10 Feb 2026 15:24:54 +0100 Subject: [PATCH] MINOR: h1-htx: Disable 0-copy for buffers of different size When a message payload is parsed, it is possible to swap buffers. We must only take care both buffers have same size. It will be mandatory when the large buffers support on channels will be added. --- src/h1_htx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/h1_htx.c b/src/h1_htx.c index 1f806a76e..b956747c2 100644 --- a/src/h1_htx.c +++ b/src/h1_htx.c @@ -464,9 +464,10 @@ static size_t h1_copy_msg_data(struct htx **dsthtx, struct buffer *srcbuf, size_ * - count == srcbuf->data * - srcbuf->head == sizeof(struct htx) * => we can swap the buffers and place an htx header into - * the target buffer instead + * the target buffer instead (for buffers of same size) */ - if (unlikely(htx_is_empty(tmp_htx) && count == b_data(srcbuf) && + if (unlikely(b_size(srcbuf) == b_size(htxbuf) && + htx_is_empty(tmp_htx) && count == b_data(srcbuf) && !ofs && b_head_ofs(srcbuf) == sizeof(struct htx))) { void *raw_area = srcbuf->area; void *htx_area = htxbuf->area; -- 2.47.3