From: Christopher Faulet Date: Tue, 22 Jul 2025 06:22:06 +0000 (+0200) Subject: MINOR: http-client: Trigger an error if first response block isn't a start-line X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1adc8a5c62b72269e00eab3c4dee442c750ed3e9;p=thirdparty%2Fhaproxy.git MINOR: http-client: Trigger an error if first response block isn't a start-line The first HTX block of a response must be a start-line. There is no reason to wait for something else. And if there are output data in the response channel buffer, it means we must found the start-line. --- diff --git a/src/http_client.c b/src/http_client.c index b881383e7..49aba5ba2 100644 --- a/src/http_client.c +++ b/src/http_client.c @@ -654,13 +654,10 @@ void httpclient_applet_io_handler(struct appctx *appctx) if (!co_data(res)) goto out; htx = htxbuf(&res->buf); - if (htx_is_empty(htx)) - goto out; - blk = htx_get_head_blk(htx); - if (blk && (htx_get_blk_type(blk) == HTX_BLK_RES_SL)) - sl = htx_get_blk_ptr(htx, blk); - if (!sl || (!(sl->flags & HTX_SL_F_IS_RESP))) - goto out; + if (htx_get_first_type(htx) != HTX_BLK_RES_SL) + goto error; + blk = DISGUISE(htx_get_head_blk(htx)); + sl = htx_get_blk_ptr(htx, blk); /* Skipp any 1XX interim responses */ if (sl->info.res.status < 200) {