mirror of
https://github.com/haproxy/haproxy.git
synced 2026-06-09 00:32:33 -04:00
BUG/MINOR: mux_quic: fix BE conn removal on app shutdown
When QUIC application layer is shut for a backend connection, the
connection is immediately removed from its idle pool. This is a nice
optimization as this prevents a future streams to try to reuse an
unusable connection. This is implemented since the following commit.
00d668549e
MINOR: mux-quic: do not reuse connection if app already shut
However, this removal is not correctly performed as it is used
conn_delete_from_tree(). For private connections, this can cause crashes
as they are stored in the session instead. Thus, connection status is
now properly check, and alternatively session_unown_conn() is used if
stored in the session.
This must be backported up to 3.3.
This commit is contained in:
parent
802a3b7288
commit
c76e0f1bc4
1 changed files with 6 additions and 2 deletions
|
|
@ -3555,8 +3555,12 @@ static void qcc_app_shutdown(struct qcc *qcc)
|
|||
}
|
||||
|
||||
/* A connection is not reusable if app layer is closed. */
|
||||
if (qcc->flags & QC_CF_IS_BACK)
|
||||
conn_delete_from_tree(qcc->conn, tid);
|
||||
if (qcc->flags & QC_CF_IS_BACK) {
|
||||
if (qcc->conn->flags & CO_FL_LIST_MASK)
|
||||
conn_delete_from_tree(qcc->conn, tid);
|
||||
else if (qcc->conn->flags & CO_FL_SESS_IDLE)
|
||||
session_unown_conn(qcc->conn->owner, qcc->conn);
|
||||
}
|
||||
|
||||
out:
|
||||
qcc->app_st = QCC_APP_ST_SHUT;
|
||||
|
|
|
|||
Loading…
Reference in a new issue