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.
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
}
/* 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);