BUG/MINOR: h3: Set HTX flags corresponding to the scheme found in the request

When a ":scheme" pseudo-header is found in a h3 request, the
HTX_SL_F_HAS_SCHM flag must be set on the HTX message. And if the scheme is
'http' or 'https', the corresponding HTX flag must also be set. So,
respectively, HTX_SL_F_SCHM_HTTP or HTX_SL_F_SCHM_HTTPS.

It is mainly used to send the right ":scheme" pseudo-header value to H2
server on backend side.

This patch could be backported as far as 2.6.
This commit is contained in:
Christopher Faulet 2025-05-26 11:28:04 +02:00
parent 083708daf8
commit da9792cca8

View File

@ -679,7 +679,12 @@ static ssize_t h3_headers_to_htx(struct qcs *qcs, const struct buffer *buf,
goto out;
}
if (!http_validate_scheme(list[hdr_idx].v)) {
flags |= HTX_SL_F_HAS_SCHM;
if (isteqi(list[hdr_idx].v, ist("http")))
flags |= HTX_SL_F_SCHM_HTTP;
else if (isteqi(list[hdr_idx].v, ist("https")))
flags |= HTX_SL_F_SCHM_HTTPS;
else if (!http_validate_scheme(list[hdr_idx].v)) {
TRACE_ERROR("invalid scheme pseudo-header", H3_EV_RX_FRAME|H3_EV_RX_HDR, qcs->qcc->conn, qcs);
h3s->err = H3_ERR_MESSAGE_ERROR;
qcc_report_glitch(h3c->qcc, 1);