This bug is quite old. When the length of the first DATA block is computed,
the offset is used instead of the block length minus the offset. It is only
used with random forwarding and there is a test just after to prevent any
issue, so there is no effect.
It could be backported to all stable versions.
blk = htxret.blk;
if (blk && htxret.ret && htx_get_blk_type(blk) == HTX_BLK_DATA) {
- data += htxret.ret;
+ data += htx_get_blksz(blk) - htxret.ret;
blk = htx_get_next_blk(htx, blk);
}
while (blk) {