diff --git a/src/mux_quic.c b/src/mux_quic.c index 6cc7756d8..5205f0a18 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -296,13 +296,17 @@ void qcs_consume(struct qcs *qcs, uint64_t bytes) { struct qcc *qcc = qcs->qcc; struct quic_frame *frm; + struct ncbuf *buf = &qcs->rx.ncbuf; enum ncb_ret ret; - ret = ncb_advance(&qcs->rx.ncbuf, bytes); + ret = ncb_advance(buf, bytes); if (ret) { ABORT_NOW(); /* should not happens because removal only in data */ } + if (ncb_is_empty(buf)) + qc_free_ncbuf(qcs, buf); + qcs->rx.offset += bytes; if (qcs->rx.msd - qcs->rx.offset < qcs->rx.msd_init / 2) { frm = pool_zalloc(pool_head_quic_frame);