BUG/MINOR: mux_quic: free frames emitted with QMux

When using QUIC, mux instantiates quic_frame objects but does not free
them. This is performed only when acknowledgment are received.

This is not the case for QMux protocol, as the transport layer is much
simpler in this case. As such, mux is responsible to free up the frames
after emission.

This patch fixes qcc_qstrm_send_frames() by adding the necessary
qc_frm_free() calls as soon as a frame is emitted. This fixes a memory
leak. This function ensures that the freed object is removed from its
parent list, so LIST_DEL_INIT() is not necessary anymore.

No need to backport.
This commit is contained in:
Amaury Denoyelle 2026-04-28 11:02:23 +02:00
parent 4449323464
commit 4bffea8579

View File

@ -368,11 +368,12 @@ int qcc_qstrm_send_frames(struct qcc *qcc, struct list *frms)
if (frm->type >= QUIC_FT_STREAM_8 && frm->type <= QUIC_FT_STREAM_F)
qstrm_ctrl_send(frm->stream.stream, frm->stream.len);
LIST_DEL_INIT(&frm->list);
if (split_frm) {
qc_frm_free(NULL, &split_frm);
frm = next_frm;
goto loop;
}
qc_frm_free(NULL, &frm);
}
out: