mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-12 08:27:24 +00:00
BUG/MINOR: mux-quic: ensure to free all qcs on MUX release
Remove qcs instances left during qcc MUX release. This can happen when the MUX is closed before the completion of all the transfers, such as on a timeout or process termination. This may free some memory leaks on the connection.
This commit is contained in:
parent
8347f27221
commit
f89094510c
@ -475,6 +475,8 @@ static void qc_release(struct qcc *qcc)
|
||||
TRACE_ENTER(QMUX_EV_QCC_END);
|
||||
|
||||
if (qcc) {
|
||||
struct eb64_node *node;
|
||||
|
||||
/* The connection must be aattached to this mux to be released */
|
||||
if (qcc->conn && qcc->conn->ctx == qcc)
|
||||
conn = qcc->conn;
|
||||
@ -487,6 +489,14 @@ static void qc_release(struct qcc *qcc)
|
||||
if (qcc->wait_event.tasklet)
|
||||
tasklet_free(qcc->wait_event.tasklet);
|
||||
|
||||
/* liberate remaining qcs instances */
|
||||
node = eb64_first(&qcc->streams_by_id);
|
||||
while (node) {
|
||||
struct qcs *qcs = eb64_entry(node, struct qcs, by_id);
|
||||
node = eb64_next(node);
|
||||
qcs_free(qcs);
|
||||
}
|
||||
|
||||
pool_free(pool_head_qcc, qcc);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user