diff --git a/src/http/ngx_http_accounting_module.c b/src/http/ngx_http_accounting_module.c index 63eccf0..23a5fc3 100644 --- a/src/http/ngx_http_accounting_module.c +++ b/src/http/ngx_http_accounting_module.c @@ -139,7 +139,7 @@ ngx_http_accounting_process_init(ngx_cycle_t *cycle) } if (amcf->current == NULL) { - if (ngx_traffic_accounting_period_create(cycle->pool, amcf) != NGX_OK) + if (ngx_traffic_accounting_period_create(amcf) != NGX_OK) return NGX_ERROR; } @@ -206,7 +206,7 @@ worker_process_alarm_handler(ngx_event_t *ev) amcf = ngx_http_cycle_get_module_main_conf(ngx_cycle, ngx_http_accounting_module); - ngx_traffic_accounting_period_rotate(amcf->current->pool, amcf); + ngx_traffic_accounting_period_rotate(amcf); ngx_traffic_accounting_period_rbtree_iterate(amcf->previous, worker_process_export_metrics, amcf->previous->created_at, @@ -243,10 +243,10 @@ ngx_http_accounting_request_handler(ngx_http_request_t *r) amcf = ngx_http_get_module_main_conf(r, ngx_http_accounting_module); - metrics = ngx_traffic_accounting_period_fetch_metrics(amcf->current, accounting_id); + metrics = ngx_traffic_accounting_period_fetch_metrics(amcf->current, accounting_id, amcf->log); if (metrics == NULL) { return NGX_ERROR; } - if (ngx_traffic_accounting_metrics_init(metrics, amcf->current->pool, ngx_http_statuses_len) == NGX_ERROR) + if (ngx_traffic_accounting_metrics_init(metrics, ngx_http_statuses_len, amcf->log) == NGX_ERROR) return NGX_ERROR; amcf->current->updated_at = ngx_timeofday(); diff --git a/src/ngx_traffic_accounting.h b/src/ngx_traffic_accounting.h index 1812927..462becf 100644 --- a/src/ngx_traffic_accounting.h +++ b/src/ngx_traffic_accounting.h @@ -38,21 +38,19 @@ typedef struct { ngx_rbtree_t rbtree; ngx_rbtree_node_t sentinel; - ngx_pool_t *pool; - ngx_time_t *created_at; ngx_time_t *updated_at; } ngx_traffic_accounting_period_t; -ngx_int_t ngx_traffic_accounting_metrics_init(ngx_traffic_accounting_metrics_t *metrics, ngx_pool_t *pool, size_t len); +ngx_int_t ngx_traffic_accounting_metrics_init(ngx_traffic_accounting_metrics_t *metrics, size_t len, ngx_log_t *log); ngx_int_t ngx_traffic_accounting_period_init(ngx_traffic_accounting_period_t *period); -void ngx_traffic_accounting_period_insert(ngx_traffic_accounting_period_t *period, ngx_str_t *name); +void ngx_traffic_accounting_period_insert(ngx_traffic_accounting_period_t *period, ngx_str_t *name, ngx_log_t *log); void ngx_traffic_accounting_period_insert_metrics(ngx_traffic_accounting_period_t *period, ngx_traffic_accounting_metrics_t *metrics); void ngx_traffic_accounting_period_delete(ngx_traffic_accounting_period_t *period, ngx_str_t *name); void ngx_traffic_accounting_period_delete_metrics(ngx_traffic_accounting_period_t *period, ngx_traffic_accounting_metrics_t *metrics); ngx_traffic_accounting_metrics_t * ngx_traffic_accounting_period_lookup_metrics(ngx_traffic_accounting_period_t *period, ngx_str_t *name); -ngx_traffic_accounting_metrics_t * ngx_traffic_accounting_period_fetch_metrics(ngx_traffic_accounting_period_t *period, ngx_str_t *name); +ngx_traffic_accounting_metrics_t * ngx_traffic_accounting_period_fetch_metrics(ngx_traffic_accounting_period_t *period, ngx_str_t *name, ngx_log_t *log); typedef ngx_int_t (*ngx_traffic_accounting_period_iterate_func)(void *val, void *para1, void *para2); diff --git a/src/ngx_traffic_accounting_module.c b/src/ngx_traffic_accounting_module.c index ebc877a..2291db7 100644 --- a/src/ngx_traffic_accounting_module.c +++ b/src/ngx_traffic_accounting_module.c @@ -9,15 +9,14 @@ ngx_int_t -ngx_traffic_accounting_period_create(ngx_pool_t *pool, ngx_traffic_accounting_main_conf_t *amcf) +ngx_traffic_accounting_period_create(ngx_traffic_accounting_main_conf_t *amcf) { ngx_traffic_accounting_period_t *period; - period = ngx_pcalloc(pool, sizeof(ngx_traffic_accounting_period_t)); + period = ngx_calloc(sizeof(ngx_traffic_accounting_period_t), amcf->log); if (period == NULL) return NGX_ERROR; - period->pool = pool; ngx_traffic_accounting_period_init(period); period->created_at = ngx_timeofday(); @@ -28,11 +27,11 @@ ngx_traffic_accounting_period_create(ngx_pool_t *pool, ngx_traffic_accounting_ma } ngx_int_t -ngx_traffic_accounting_period_rotate(ngx_pool_t *pool, ngx_traffic_accounting_main_conf_t *amcf) +ngx_traffic_accounting_period_rotate(ngx_traffic_accounting_main_conf_t *amcf) { - ngx_pfree(pool, amcf->previous); + ngx_free(amcf->previous); amcf->previous = amcf->current; - return ngx_traffic_accounting_period_create(pool, amcf); + return ngx_traffic_accounting_period_create(amcf); } diff --git a/src/ngx_traffic_accounting_module.h b/src/ngx_traffic_accounting_module.h index 08881f1..adfccec 100644 --- a/src/ngx_traffic_accounting_module.h +++ b/src/ngx_traffic_accounting_module.h @@ -46,8 +46,8 @@ ngx_str_t * ngx_traffic_accounting_get_accounting_id(void *entry, ngx_get_loc_co ngx_get_indexed_variable_pt get_indexed_variable); -ngx_int_t ngx_traffic_accounting_period_create(ngx_pool_t *pool, ngx_traffic_accounting_main_conf_t *amcf); -ngx_int_t ngx_traffic_accounting_period_rotate(ngx_pool_t *pool, ngx_traffic_accounting_main_conf_t *amcf); +ngx_int_t ngx_traffic_accounting_period_create(ngx_traffic_accounting_main_conf_t *amcf); +ngx_int_t ngx_traffic_accounting_period_rotate(ngx_traffic_accounting_main_conf_t *amcf); #endif /* _NGX_TRAFFIC_ACCOUNTING_MODULE_H_INCLUDED_ */ diff --git a/src/ngx_traffic_accounting_period_metrics.c b/src/ngx_traffic_accounting_period_metrics.c index b6b7055..7376ad9 100644 --- a/src/ngx_traffic_accounting_period_metrics.c +++ b/src/ngx_traffic_accounting_period_metrics.c @@ -10,17 +10,17 @@ static void ngx_traffic_accounting_period_insert_value(ngx_rbtree_node_t *temp, ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel); ngx_int_t -ngx_traffic_accounting_metrics_init(ngx_traffic_accounting_metrics_t *metrics, ngx_pool_t *pool, size_t len) +ngx_traffic_accounting_metrics_init(ngx_traffic_accounting_metrics_t *metrics, size_t len, ngx_log_t *log) { if (metrics->nr_status == NULL) { - metrics->nr_status = ngx_pcalloc(pool, sizeof(ngx_uint_t) * len); + metrics->nr_status = ngx_calloc(sizeof(ngx_uint_t) * len, log); if (metrics->nr_status == NULL) return NGX_ERROR; } if (metrics->nr_upstream_status == NULL) { - metrics->nr_upstream_status = ngx_pcalloc(pool, sizeof(ngx_uint_t) * len); + metrics->nr_upstream_status = ngx_calloc(sizeof(ngx_uint_t) * len, log); if (metrics->nr_upstream_status == NULL) return NGX_ERROR; @@ -39,14 +39,14 @@ ngx_traffic_accounting_period_init(ngx_traffic_accounting_period_t *period) } void -ngx_traffic_accounting_period_insert(ngx_traffic_accounting_period_t *period, ngx_str_t *name) +ngx_traffic_accounting_period_insert(ngx_traffic_accounting_period_t *period, ngx_str_t *name, ngx_log_t *log) { ngx_traffic_accounting_metrics_t *metrics; - metrics = ngx_pcalloc(period->pool, sizeof(ngx_traffic_accounting_metrics_t)); + metrics = ngx_calloc(sizeof(ngx_traffic_accounting_metrics_t), log); void *data; - data = ngx_pcalloc(period->pool, name->len+1); + data = ngx_calloc(name->len+1, log); ngx_memcpy(data, name->data, name->len); metrics->name.data = data; @@ -82,7 +82,7 @@ void ngx_traffic_accounting_period_delete_metrics(ngx_traffic_accounting_period_t *period, ngx_traffic_accounting_metrics_t *metrics) { ngx_rbtree_delete(&period->rbtree, &metrics->rbnode); - ngx_pfree(period->pool, metrics); + ngx_free(metrics); } ngx_traffic_accounting_metrics_t * @@ -124,7 +124,7 @@ ngx_traffic_accounting_period_lookup_metrics(ngx_traffic_accounting_period_t *pe } ngx_traffic_accounting_metrics_t * -ngx_traffic_accounting_period_fetch_metrics(ngx_traffic_accounting_period_t *period, ngx_str_t *name) +ngx_traffic_accounting_period_fetch_metrics(ngx_traffic_accounting_period_t *period, ngx_str_t *name, ngx_log_t *log) { ngx_traffic_accounting_metrics_t *n; @@ -132,7 +132,7 @@ ngx_traffic_accounting_period_fetch_metrics(ngx_traffic_accounting_period_t *per if (n != NULL) return n; - ngx_traffic_accounting_period_insert(period, name); + ngx_traffic_accounting_period_insert(period, name, log); return ngx_traffic_accounting_period_lookup_metrics(period, name); } @@ -158,9 +158,10 @@ ngx_traffic_accounting_period_rbtree_iterate(ngx_traffic_accounting_period_t *pe if (rc == NGX_DONE) { /* NGX_DONE -> destroy node */ ngx_rbtree_delete(rbtree, node); - ngx_pfree(period->pool, n->nr_status); - ngx_pfree(period->pool, n->nr_upstream_status); - ngx_pfree(period->pool, n); + ngx_free(n->nr_status); + ngx_free(n->nr_upstream_status); + ngx_free(n->name.data); + ngx_free(n); goto done; } diff --git a/src/stream/ngx_stream_accounting_module.c b/src/stream/ngx_stream_accounting_module.c index b1839d1..3db787d 100644 --- a/src/stream/ngx_stream_accounting_module.c +++ b/src/stream/ngx_stream_accounting_module.c @@ -136,7 +136,7 @@ ngx_stream_accounting_process_init(ngx_cycle_t *cycle) } if (amcf->current == NULL) { - if (ngx_traffic_accounting_period_create(cycle->pool, amcf) != NGX_OK) + if (ngx_traffic_accounting_period_create(amcf) != NGX_OK) return NGX_ERROR; } @@ -203,7 +203,7 @@ worker_process_alarm_handler(ngx_event_t *ev) amcf = ngx_stream_cycle_get_module_main_conf(ngx_cycle, ngx_stream_accounting_module); - ngx_traffic_accounting_period_rotate(amcf->current->pool, amcf); + ngx_traffic_accounting_period_rotate(amcf); ngx_traffic_accounting_period_rbtree_iterate(amcf->previous, worker_process_export_metrics, amcf->previous->created_at, @@ -240,10 +240,10 @@ ngx_stream_accounting_session_handler(ngx_stream_session_t *s) amcf = ngx_stream_get_module_main_conf(s, ngx_stream_accounting_module); - metrics = ngx_traffic_accounting_period_fetch_metrics(amcf->current, accounting_id); + metrics = ngx_traffic_accounting_period_fetch_metrics(amcf->current, accounting_id, amcf->log); if (metrics == NULL) { return NGX_ERROR; } - if (ngx_traffic_accounting_metrics_init(metrics, amcf->current->pool, ngx_stream_statuses_len) == NGX_ERROR) + if (ngx_traffic_accounting_metrics_init(metrics, ngx_stream_statuses_len, amcf->log) == NGX_ERROR) return NGX_ERROR; amcf->current->updated_at = ngx_timeofday();