MINOR: h3: report error on HEADERS/DATA parsing

Inspect return code of HEADERS/DATA parsing functions and use a BUG_ON
to signal an error. The stream should be closed to handle the error
in a more clean fashion.
This commit is contained in:
Amaury Denoyelle 2022-02-15 17:30:27 +01:00
parent 71f3abbb52
commit 31e4f6e149

View File

@ -231,6 +231,7 @@ static int h3_data_to_htx(struct qcs *qcs, struct buffer *buf, uint64_t len,
static int h3_decode_qcs(struct qcs *qcs, int fin, void *ctx) static int h3_decode_qcs(struct qcs *qcs, int fin, void *ctx)
{ {
struct buffer *rxbuf = &qcs->rx.buf; struct buffer *rxbuf = &qcs->rx.buf;
int ret;
h3_debug_printf(stderr, "%s: STREAM ID: %llu\n", __func__, qcs->by_id.key); h3_debug_printf(stderr, "%s: STREAM ID: %llu\n", __func__, qcs->by_id.key);
if (!b_data(rxbuf)) if (!b_data(rxbuf))
@ -261,10 +262,14 @@ static int h3_decode_qcs(struct qcs *qcs, int fin, void *ctx)
switch (ftype) { switch (ftype) {
case H3_FT_DATA: case H3_FT_DATA:
h3_data_to_htx(qcs, rxbuf, flen, last_stream_frame); ret = h3_data_to_htx(qcs, rxbuf, flen, last_stream_frame);
/* TODO handle error reporting. Stream closure required. */
BUG_ON(ret);
break; break;
case H3_FT_HEADERS: case H3_FT_HEADERS:
h3_headers_to_htx(qcs, rxbuf, flen, last_stream_frame); ret = h3_headers_to_htx(qcs, rxbuf, flen, last_stream_frame);
/* TODO handle error reporting. Stream closure required. */
BUG_ON(ret);
break; break;
case H3_FT_PUSH_PROMISE: case H3_FT_PUSH_PROMISE:
/* Not supported */ /* Not supported */