Mercurial > hg > nginx
changeset 8896:e2ec952dc295 quic
QUIC: fixed removal of unused client IDs.
If client ID was never used, its refcount is zero. To keep things simple,
the ngx_quic_unref_client_id() function is now aware of such IDs.
If client ID was used, the ngx_quic_replace_retired_client_id() function
is supposed to find all users and unref the ID, thus ngx_quic_unref_client_id()
should not be called after it.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Wed, 13 Oct 2021 14:48:33 +0300 |
parents | 4b2d259bdadd |
children | 1d7bf9778328 |
files | src/event/quic/ngx_event_quic_connid.c |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/event/quic/ngx_event_quic_connid.c Wed Nov 03 13:36:21 2021 +0300 +++ b/src/event/quic/ngx_event_quic_connid.c Wed Oct 13 14:48:33 2021 +0300 @@ -183,9 +183,10 @@ if (ngx_quic_replace_retired_client_id(c, cid) != NGX_OK) { return NGX_ERROR; } + + } else { + ngx_quic_unref_client_id(c, cid); } - - ngx_quic_unref_client_id(c, cid); } done: @@ -534,7 +535,9 @@ { ngx_quic_connection_t *qc; - cid->refcnt--; + if (cid->refcnt) { + cid->refcnt--; + } /* else: unused client id */ if (cid->refcnt) { return;