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.
This commit is contained in:
Vladimir Homutov 2021-10-13 14:48:33 +03:00
parent 0572c2a69f
commit 9ca3a02e68

View File

@ -183,9 +183,10 @@ retire:
if (ngx_quic_replace_retired_client_id(c, cid) != NGX_OK) {
return NGX_ERROR;
}
}
ngx_quic_unref_client_id(c, cid);
} else {
ngx_quic_unref_client_id(c, cid);
}
}
done:
@ -534,7 +535,9 @@ ngx_quic_unref_client_id(ngx_connection_t *c, ngx_quic_client_id_t *cid)
{
ngx_quic_connection_t *qc;
cid->refcnt--;
if (cid->refcnt) {
cid->refcnt--;
} /* else: unused client id */
if (cid->refcnt) {
return;