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.
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:
{
ngx_quic_connection_t *qc;
- cid->refcnt--;
+ if (cid->refcnt) {
+ cid->refcnt--;
+ } /* else: unused client id */
if (cid->refcnt) {
return;