diff options
| author | Vladimir Homutov <vl@nginx.com> | 2020-04-15 13:09:39 +0300 |
|---|---|---|
| committer | Vladimir Homutov <vl@nginx.com> | 2020-04-15 13:09:39 +0300 |
| commit | 001b81af88c5f67b789142cd07ba3f08e9f91102 (patch) | |
| tree | b7e67d9d3c727f41ba85c979915e50f3fc31d18b /src | |
| parent | 53d47318c5fc181a8fa05f2ecc785fd14a4e5a8d (diff) | |
| download | nginx-001b81af88c5f67b789142cd07ba3f08e9f91102.tar.gz nginx-001b81af88c5f67b789142cd07ba3f08e9f91102.tar.bz2 | |
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)
Diffstat (limited to 'src')
| -rw-r--r-- | src/event/ngx_event_quic.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c index 42a29e342..a85c14934 100644 --- a/src/event/ngx_event_quic.c +++ b/src/event/ngx_event_quic.c @@ -750,10 +750,6 @@ ngx_quic_close_connection(ngx_connection_t *c) 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 @@ ngx_quic_close_connection(ngx_connection_t *c) 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); } |
