list, sizeof(list) / sizeof(list[0]));
if (ret < 0) {
TRACE_ERROR("QPACK decoding error", H3_EV_RX_FRAME|H3_EV_RX_HDR, qcs->qcc->conn, qcs);
- if ((qpack_err = qpack_err_decode(ret)) >= 0) {
+ if ((qpack_err = qpack_err_decode(ret)) >= 0)
h3c->err = qpack_err;
- qcc_report_glitch(qcs->qcc, 1);
- }
len = -1;
goto out;
}
list, sizeof(list) / sizeof(list[0]));
if (ret < 0) {
TRACE_ERROR("QPACK decoding error", H3_EV_RX_FRAME|H3_EV_RX_HDR, qcs->qcc->conn, qcs);
- if ((qpack_err = qpack_err_decode(ret)) >= 0) {
+ if ((qpack_err = qpack_err_decode(ret)) >= 0)
h3c->err = qpack_err;
- qcc_report_glitch(qcs->qcc, 1);
- }
len = -1;
goto out;
}
tmp, list, sizeof(list) / sizeof(list[0]));
if (ret < 0) {
TRACE_ERROR("QPACK decoding error", H3_EV_RX_FRAME|H3_EV_RX_HDR, qcs->qcc->conn, qcs);
- if ((qpack_err = qpack_err_decode(ret)) >= 0) {
+ if ((qpack_err = qpack_err_decode(ret)) >= 0)
h3c->err = qpack_err;
- qcc_report_glitch(qcs->qcc, 1);
- }
len = -1;
goto out;
}
ret = h3_trailers_to_htx(qcs, b, flen, last_stream_frame);
h3s->st_req = H3S_ST_REQ_TRAILERS;
}
+
+ if (h3c->err) {
+ qcc_set_error(qcs->qcc, h3c->err, 1, muxc_tevt_type_proto_err);
+ qcc_report_glitch(qcs->qcc, 1);
+ goto err;
+ }
+
break;
case H3_FT_CANCEL_PUSH:
if (unlikely(!flen)) {