From 8fa60e4613623558411b2f932a38c16d2d712093 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 23 May 2019 11:04:05 +0200 Subject: [PATCH] MINOR: stats/htx: don't use the first block position but the head one Applets must never rely on the first block position to consume an HTX message. The head position must be used instead. For the request it is always the start-line. At this stage, it is not a bug, because the first position of the request is never changed by HTX analysers. --- src/stats.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/stats.c b/src/stats.c index a8f9795c9..9c3bf7c14 100644 --- a/src/stats.c +++ b/src/stats.c @@ -277,8 +277,13 @@ static const char *stats_scope_ptr(struct appctx *appctx, struct stream_interfac if (IS_HTX_STRM(si_strm(si))) { struct channel *req = si_oc(si); struct htx *htx = htxbuf(&req->buf); - struct ist uri = htx_sl_req_uri(http_get_stline(htx)); + struct htx_blk *blk; + struct ist uri; + blk = htx_get_head_blk(htx); + BUG_ON(htx_get_blk_type(blk) != HTX_BLK_REQ_SL); + ALREADY_CHECKED(blk); + uri = htx_sl_req_uri(htx_get_blk_ptr(htx, blk)); p = uri.ptr; } else @@ -2788,7 +2793,7 @@ static int stats_process_http_post(struct stream_interface *si) } /* The request was fully received. Copy data */ - blk = htx_get_first_blk(htx); + blk = htx_get_head_blk(htx); while (blk) { enum htx_blk_type type = htx_get_blk_type(blk);