MINOR: mux-quic: remove qcc_shutdown() from qcc_release()

Render qcc_release() more generic by removing qcc_shutdown(). This
prevents systematic graceful shutdown/CONNECTION_CLOSE emission if only
QCC resource deallocation is necessary.

For now, qcc_shutdown() is used before every qcc_release() invocation.
The only exception is on qmux_destroy stream layer callback.

This commit will be useful to reuse qcc_release() in other contexts to
simply deallocate a QCC instance.
This commit is contained in:
Amaury Denoyelle 2023-12-18 17:30:35 +01:00
parent 3811c1de25
commit 3c38bb7ee1

View File

@ -2387,9 +2387,7 @@ static int qcc_io_process(struct qcc *qcc)
return 0; return 0;
} }
/* release function. This one should be called to free all resources allocated /* Free all resources allocated for <qcc> connection. */
* to the mux.
*/
static void qcc_release(struct qcc *qcc) static void qcc_release(struct qcc *qcc)
{ {
struct connection *conn = qcc->conn; struct connection *conn = qcc->conn;
@ -2397,8 +2395,6 @@ static void qcc_release(struct qcc *qcc)
TRACE_ENTER(QMUX_EV_QCC_END, conn); TRACE_ENTER(QMUX_EV_QCC_END, conn);
qcc_shutdown(qcc);
if (qcc->task) { if (qcc->task) {
task_destroy(qcc->task); task_destroy(qcc->task);
qcc->task = NULL; qcc->task = NULL;
@ -2471,6 +2467,7 @@ struct task *qcc_io_cb(struct task *t, void *ctx, unsigned int status)
return NULL; return NULL;
release: release:
qcc_shutdown(qcc);
qcc_release(qcc); qcc_release(qcc);
TRACE_LEAVE(QMUX_EV_QCC_WAKE); TRACE_LEAVE(QMUX_EV_QCC_WAKE);
return NULL; return NULL;
@ -2513,6 +2510,7 @@ static struct task *qcc_timeout_task(struct task *t, void *ctx, unsigned int sta
*/ */
if (qcc_is_dead(qcc)) { if (qcc_is_dead(qcc)) {
TRACE_STATE("releasing dead connection", QMUX_EV_QCC_WAKE, qcc->conn); TRACE_STATE("releasing dead connection", QMUX_EV_QCC_WAKE, qcc->conn);
qcc_shutdown(qcc);
qcc_release(qcc); qcc_release(qcc);
} }
@ -2710,6 +2708,7 @@ static void qmux_strm_detach(struct sedesc *sd)
return; return;
release: release:
qcc_shutdown(qcc);
qcc_release(qcc); qcc_release(qcc);
TRACE_LEAVE(QMUX_EV_STRM_END); TRACE_LEAVE(QMUX_EV_STRM_END);
return; return;
@ -2967,6 +2966,7 @@ static int qmux_wake(struct connection *conn)
return 0; return 0;
release: release:
qcc_shutdown(qcc);
qcc_release(qcc); qcc_release(qcc);
TRACE_LEAVE(QMUX_EV_QCC_WAKE); TRACE_LEAVE(QMUX_EV_QCC_WAKE);
return 1; return 1;