diff --git a/src/flt_http_comp.c b/src/flt_http_comp.c index 574b93734..b456fcd7a 100644 --- a/src/flt_http_comp.c +++ b/src/flt_http_comp.c @@ -177,19 +177,17 @@ comp_http_payload(struct stream *s, struct filter *filter, struct http_msg *msg, { struct comp_state *st = filter->ctx; struct htx *htx = htxbuf(&msg->chn->buf); + struct htx_ret htxret = htx_find_offset(htx, offset); struct htx_blk *blk; int ret, consumed = 0, to_forward = 0; - for (blk = htx_get_first_blk(htx); blk && len; blk = htx_get_next_blk(htx, blk)) { + blk = htxret.blk; + offset = htxret.ret; + for (; blk && len; blk = htx_get_next_blk(htx, blk)) { enum htx_blk_type type = htx_get_blk_type(blk); uint32_t sz = htx_get_blksz(blk); struct ist v; - if (offset >= sz) { - offset -= sz; - continue; - } - switch (type) { case HTX_BLK_UNUSED: break;