From 24598a499fec99994c1c0e61bca8208333100e86 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 26 Feb 2020 22:06:11 +0100 Subject: [PATCH] MINOR: flt_trace: Use htx_find_offset() to get the available payload length The trace_get_htx_datalen() function now uses htx_find_offset() to get the payload length, ie. the length of consecutives DATA blocks. --- src/flt_trace.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/flt_trace.c b/src/flt_trace.c index 437f283a5..5a26fabea 100644 --- a/src/flt_trace.c +++ b/src/flt_trace.c @@ -157,23 +157,22 @@ static unsigned int trace_get_htx_datalen(struct htx *htx, unsigned int offset, unsigned int len) { struct htx_blk *blk; - uint32_t sz, data = 0; + struct htx_ret htxret = htx_find_offset(htx, offset); + uint32_t data = 0; - for (blk = htx_get_first_blk(htx); blk; blk = htx_get_next_blk(htx, blk)) { - if (htx_get_blk_type(blk) != HTX_BLK_DATA) + blk = htxret.blk; + if (blk && htxret.ret && htx_get_blk_type(blk) == HTX_BLK_DATA) { + data += htxret.ret; + blk = htx_get_next_blk(htx, blk); + } + while (blk) { + if (htx_get_blk_type(blk) == HTX_BLK_UNUSED) + goto next; + else if (htx_get_blk_type(blk) != HTX_BLK_DATA) break; - - sz = htx_get_blksz(blk); - if (offset >= sz) { - offset -= sz; - continue; - } - data += sz - offset; - offset = 0; - if (data > len) { - data = len; - break; - } + data += htx_get_blksz(blk); + next: + blk = htx_get_next_blk(htx, blk); } return data; }