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.
This commit is contained in:
Olivier Houchard 2018-12-14 16:28:08 +01:00 committed by Willy Tarreau
parent 2a454d8c7c
commit 84cca66ea3
2 changed files with 2 additions and 2 deletions

View File

@ -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 &&

View File

@ -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);