mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
MEDIUM: mux-quic: delay the closing with the timeout
Do not close immediatly the connection if there is no bidirectional stream opened. Schedule instead the mux timeout when this condition is verified. On the timer expiration, the mux/connection can be freed.
This commit is contained in:
parent
aebe26f8ba
commit
1136e9243a
@ -391,9 +391,10 @@ static struct task *qc_io_cb(struct task *t, void *ctx, unsigned int status)
|
||||
qc_send(qcc);
|
||||
|
||||
if (qc_release_detached_streams(qcc)) {
|
||||
if (qcc_is_dead(qcc)) {
|
||||
qc_release(qcc);
|
||||
return NULL;
|
||||
/* Schedule the mux timeout if no bidirectional streams left. */
|
||||
if (qcc_may_expire(qcc)) {
|
||||
qcc->task->expire = tick_add(now_ms, qcc->timeout);
|
||||
task_queue(qcc->task);
|
||||
}
|
||||
}
|
||||
|
||||
@ -530,9 +531,11 @@ static void qc_detach(struct conn_stream *cs)
|
||||
}
|
||||
|
||||
qcs_destroy(qcs);
|
||||
if (qcc_is_dead(qcc)) {
|
||||
qc_release(qcc);
|
||||
return;
|
||||
|
||||
/* Schedule the mux timeout if no bidirectional streams left. */
|
||||
if (qcc_may_expire(qcc)) {
|
||||
qcc->task->expire = tick_add(now_ms, qcc->timeout);
|
||||
task_queue(qcc->task);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user