HTTP/3: clean up table from session cleanup handler.

Previously table had a separate cleanup handler.
This commit is contained in:
Roman Arutyunyan 2021-04-28 11:30:27 +03:00
parent 9e05c357cc
commit 541feb5bd9
3 changed files with 13 additions and 19 deletions

View File

@ -79,6 +79,8 @@ ngx_http_v3_cleanup_session(void *data)
{
ngx_http_v3_session_t *h3c = data;
ngx_http_v3_cleanup_table(h3c);
if (h3c->keepalive.timer_set) {
ngx_del_timer(&h3c->keepalive);
}

View File

@ -14,7 +14,6 @@
static ngx_int_t ngx_http_v3_evict(ngx_connection_t *c, size_t need);
static void ngx_http_v3_cleanup_table(void *data);
static void ngx_http_v3_unblock(void *data);
static ngx_int_t ngx_http_v3_new_header(ngx_connection_t *c);
@ -240,8 +239,6 @@ ngx_int_t
ngx_http_v3_set_capacity(ngx_connection_t *c, ngx_uint_t capacity)
{
ngx_uint_t max, prev_max;
ngx_connection_t *pc;
ngx_pool_cleanup_t *cln;
ngx_http_v3_header_t **elts;
ngx_http_v3_session_t *h3c;
ngx_http_v3_srv_conf_t *h3scf;
@ -276,18 +273,7 @@ ngx_http_v3_set_capacity(ngx_connection_t *c, ngx_uint_t capacity)
return NGX_ERROR;
}
if (dt->elts == NULL) {
pc = c->quic->parent;
cln = ngx_pool_cleanup_add(pc->pool, 0);
if (cln == NULL) {
return NGX_ERROR;
}
cln->handler = ngx_http_v3_cleanup_table;
cln->data = dt;
} else {
if (dt->elts) {
ngx_memcpy(elts, dt->elts, dt->nelts * sizeof(void *));
ngx_free(dt->elts);
}
@ -301,12 +287,17 @@ ngx_http_v3_set_capacity(ngx_connection_t *c, ngx_uint_t capacity)
}
static void
ngx_http_v3_cleanup_table(void *data)
void
ngx_http_v3_cleanup_table(ngx_http_v3_session_t *h3c)
{
ngx_http_v3_dynamic_table_t *dt = data;
ngx_uint_t n;
ngx_http_v3_dynamic_table_t *dt;
ngx_uint_t n;
dt = &h3c->table;
if (dt->elts == NULL) {
return;
}
for (n = 0; n < dt->nelts; n++) {
ngx_free(dt->elts[n]);

View File

@ -29,6 +29,7 @@ typedef struct {
} ngx_http_v3_dynamic_table_t;
void ngx_http_v3_cleanup_table(ngx_http_v3_session_t *h3c);
ngx_int_t ngx_http_v3_ref_insert(ngx_connection_t *c, ngx_uint_t dynamic,
ngx_uint_t index, ngx_str_t *value);
ngx_int_t ngx_http_v3_insert(ngx_connection_t *c, ngx_str_t *name,