From: Christopher Faulet Date: Tue, 7 Oct 2025 16:53:19 +0000 (+0200) Subject: MINOR: h3: Set known input payload length of the sedesc X-Git-Tag: v3.3-dev10~52 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f6a4d41dd01e7c43d84ad77ed1fae51c57c585be;p=thirdparty%2Fhaproxy.git MINOR: h3: Set known input payload length of the sedesc Set value when data are transfer to the upper layer, in h3_rcv_buf(). The difference between the known length of the payload before and after a parsing loop is added to value. When a content-length is specified in the message, the h3s field is used. Otherwise, it is the h3s field. --- diff --git a/src/h3.c b/src/h3.c index e0a1233d5..5b94ea40a 100644 --- a/src/h3.c +++ b/src/h3.c @@ -1684,6 +1684,7 @@ static ssize_t h3_rcv_buf(struct qcs *qcs, struct buffer *b, int fin) struct h3s *h3s = qcs->ctx; struct h3c *h3c = h3s->h3c; ssize_t total = 0, ret = 0; + uint64_t prev_data_len = ((h3s->flags & H3_SF_HAVE_CLEN) ? h3s->body_len : h3s->data_len); TRACE_ENTER(H3_EV_RX_FRAME, qcs->qcc->conn, qcs); @@ -1892,6 +1893,8 @@ static ssize_t h3_rcv_buf(struct qcs *qcs, struct buffer *b, int fin) */ done: + qcs->sd->kip += ((h3s->flags & H3_SF_HAVE_CLEN) ? h3s->body_len : h3s->data_len) - prev_data_len; + TRACE_LEAVE(H3_EV_RX_FRAME, qcs->qcc->conn, qcs); return total;