Mercurial > hg > nginx
changeset 8336:739f018225af quic
Free remaining frames on connection close.
Frames can still float in the following queues:
- crypto frames reordering queues (one per encryption level)
- moved crypto frames cleanup to the moment where all streams are closed
- stream frames reordering queues (one per packet number namespace)
- frames retransmit queues (one per packet number namespace)
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Wed, 15 Apr 2020 13:09:39 +0300 |
parents | 76839f55bc48 |
children | ab443e80d9e4 |
files | src/event/ngx_event_quic.c |
diffstat | 1 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/ngx_event_quic.c Tue Apr 14 16:30:41 2020 +0300 +++ b/src/event/ngx_event_quic.c Wed Apr 15 13:09:39 2020 +0300 @@ -750,10 +750,6 @@ if (qc) { - for (i = 0; i < NGX_QUIC_ENCRYPTION_LAST; i++) { - ngx_quic_free_frames(c, &qc->crypto[i].frames); - } - qc->closing = 1; tree = &qc->streams.tree; @@ -793,6 +789,15 @@ return; } + for (i = 0; i < NGX_QUIC_ENCRYPTION_LAST; i++) { + ngx_quic_free_frames(c, &qc->crypto[i].frames); + } + + for (i = 0; i < NGX_QUIC_SEND_CTX_LAST; i++) { + ngx_quic_free_frames(c, &qc->send_ctx[i].frames); + ngx_quic_free_frames(c, &qc->send_ctx[i].sent); + } + if (qc->push.timer_set) { ngx_del_timer(&qc->push); }