From 84cca66ea37d8402b7139ce8be8e31a686523ce9 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Fri, 14 Dec 2018 16:28:08 +0100 Subject: [PATCH] BUG/MEDIUM: htx: When performing zero-copy, start from the right offset. When using zerocopy, start from the beginning of the data, not from the beginning of the buffer, it may have contained headers, and so the data won't start at the beginning of the buffer. --- src/mux_h1.c | 2 +- src/mux_h2.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mux_h1.c b/src/mux_h1.c index a20e29a32a..32004c68c4 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -1404,7 +1404,7 @@ static size_t h1_process_output(struct h1c *h1c, struct buffer *buf, size_t coun * the HTX blocks. */ if (!b_data(&h1c->obuf)) { - h1c->obuf.head = sizeof(struct htx); + h1c->obuf.head = sizeof(struct htx) + blk->addr; if (chn_htx->used == 1 && blk && htx_get_blk_type(blk) == HTX_BLK_DATA && diff --git a/src/mux_h2.c b/src/mux_h2.c index 4ca0907b6c..d13bd95823 100644 --- a/src/mux_h2.c +++ b/src/mux_h2.c @@ -4335,7 +4335,7 @@ static size_t h2s_htx_frt_make_resp_data(struct h2s *h2s, struct buffer *buf, si * frame header there. */ h2c->mbuf.area = buf->area; - h2c->mbuf.head = sizeof(struct htx) - 9; + h2c->mbuf.head = sizeof(struct htx) + blk->addr - 9; h2c->mbuf.data = fsize + 9; outbuf.area = b_head(&h2c->mbuf); -- 2.39.5