mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 20:46:11 +02:00
BUG/MEDIUM: compression: Properly get the next block to iterate on payload
When a DATA block is compressed, or when the compression context is finished on a TLR/EOT block, the next block used to loop on the HTX message must be refreshed because a defragmentation may have occurred. This bug was introduced when the EOM block was removed in 2.4. Thus, this patch must be backported to 2.4.
This commit is contained in:
parent
86ca0e52f7
commit
402740c3ad
@ -206,8 +206,10 @@ comp_http_payload(struct stream *s, struct filter *filter, struct http_msg *msg,
|
||||
|
||||
if (ret == sz && !b_data(&trash))
|
||||
next = htx_remove_blk(htx, blk);
|
||||
else
|
||||
else {
|
||||
blk = htx_replace_blk_value(htx, blk, v, ist2(b_head(&trash), b_data(&trash)));
|
||||
next = htx_get_next_blk(htx, blk);
|
||||
}
|
||||
|
||||
len -= ret;
|
||||
consumed += ret;
|
||||
@ -225,6 +227,7 @@ comp_http_payload(struct stream *s, struct filter *filter, struct http_msg *msg,
|
||||
blk = htx_get_next_blk(htx, last);
|
||||
if (!blk)
|
||||
goto error;
|
||||
next = htx_get_next_blk(htx, blk);
|
||||
to_forward += b_data(&trash);
|
||||
}
|
||||
/* fall through */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user