@@ -41,6 +41,13 @@ static ngx_conf_enum_t ngx_http_vhost_traffic_status_display_format[] = {
4141};
4242
4343
44+ static ngx_conf_enum_t ngx_http_vhost_traffic_status_average_method [] = {
45+ { ngx_string ("AMM" ), NGX_HTTP_VHOST_TRAFFIC_STATUS_AVERAGE_METHOD_AMM },
46+ { ngx_string ("WMA" ), NGX_HTTP_VHOST_TRAFFIC_STATUS_AVERAGE_METHOD_WMA },
47+ { ngx_null_string , 0 }
48+ };
49+
50+
4451static ngx_command_t ngx_http_vhost_traffic_status_commands [] = {
4552
4653 { ngx_string ("vhost_traffic_status" ),
@@ -149,6 +156,13 @@ static ngx_command_t ngx_http_vhost_traffic_status_commands[] = {
149156 0 ,
150157 NULL },
151158
159+ { ngx_string ("vhost_traffic_status_average_method" ),
160+ NGX_HTTP_MAIN_CONF |NGX_HTTP_SRV_CONF |NGX_HTTP_LOC_CONF |NGX_CONF_TAKE1 ,
161+ ngx_conf_set_enum_slot ,
162+ NGX_HTTP_LOC_CONF_OFFSET ,
163+ offsetof(ngx_http_vhost_traffic_status_loc_conf_t , average_method ),
164+ & ngx_http_vhost_traffic_status_average_method },
165+
152166 ngx_null_command
153167};
154168
@@ -541,16 +555,44 @@ ngx_http_vhost_traffic_status_create_loc_conf(ngx_conf_t *cf)
541555 return NULL ;
542556 }
543557
544- conf -> start_msec = ngx_current_msec ;
558+ /*
559+ * set by ngx_pcalloc():
560+ *
561+ * conf->shm_zone = { NULL, ... };
562+ * conf->enable = 0;
563+ * conf->filter = 0;
564+ * conf->filter_host = 0;
565+ * conf->filter_check_duplicate = 0;
566+ * conf->filter_keys = { NULL, ... };
567+ * conf->filter_vars = { NULL, ... };
568+ *
569+ * conf->limit = 0;
570+ * conf->limit_check_duplicate = 0;
571+ * conf->limit_traffics = { NULL, ... };
572+ * conf->limit_filter_traffics = { NULL, ... };
573+ *
574+ * conf->shm_name = { 0, NULL };
575+ * conf->stats = { 0, ... };
576+ * conf->start_msec = 0;
577+ * conf->format = 0;
578+ * conf->jsonp = { 0, NULL };
579+ * conf->sum_key = { 0, NULL };
580+ * conf->average_method = 0;
581+ */
582+
583+ conf -> shm_zone = NGX_CONF_UNSET_PTR ;
545584 conf -> enable = NGX_CONF_UNSET ;
546585 conf -> filter = NGX_CONF_UNSET ;
547586 conf -> filter_host = NGX_CONF_UNSET ;
548587 conf -> filter_check_duplicate = NGX_CONF_UNSET ;
588+ conf -> filter_vars = NGX_CONF_UNSET_PTR ;
589+
549590 conf -> limit = NGX_CONF_UNSET ;
550591 conf -> limit_check_duplicate = NGX_CONF_UNSET ;
551- conf -> shm_zone = NGX_CONF_UNSET_PTR ;
592+
593+ conf -> start_msec = ngx_current_msec ;
552594 conf -> format = NGX_CONF_UNSET ;
553- conf -> filter_vars = NGX_CONF_UNSET_PTR ;
595+ conf -> average_method = NGX_CONF_UNSET ;
554596
555597 conf -> node_caches = ngx_pcalloc (cf -> pool , sizeof (ngx_rbtree_node_t * )
556598 * (NGX_HTTP_VHOST_TRAFFIC_STATUS_UPSTREAM_FG + 1 ));
@@ -638,21 +680,23 @@ ngx_http_vhost_traffic_status_merge_loc_conf(ngx_conf_t *cf, void *parent, void
638680 }
639681 }
640682
683+ ngx_conf_merge_ptr_value (conf -> shm_zone , prev -> shm_zone , NULL );
641684 ngx_conf_merge_value (conf -> enable , prev -> enable , 1 );
642685 ngx_conf_merge_value (conf -> filter , prev -> filter , 1 );
643686 ngx_conf_merge_value (conf -> filter_host , prev -> filter_host , 0 );
644687 ngx_conf_merge_value (conf -> filter_check_duplicate , prev -> filter_check_duplicate , 1 );
645688 ngx_conf_merge_value (conf -> limit , prev -> limit , 1 );
646689 ngx_conf_merge_value (conf -> limit_check_duplicate , prev -> limit_check_duplicate , 1 );
647- ngx_conf_merge_ptr_value (conf -> shm_zone , prev -> shm_zone , NULL );
690+ ngx_conf_merge_ptr_value (conf -> filter_vars , prev -> filter_vars , NULL );
691+
648692 ngx_conf_merge_value (conf -> format , prev -> format ,
649693 NGX_HTTP_VHOST_TRAFFIC_STATUS_FORMAT_JSON );
650694 ngx_conf_merge_str_value (conf -> jsonp , prev -> jsonp ,
651695 NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_JSONP );
652696 ngx_conf_merge_str_value (conf -> sum_key , prev -> sum_key ,
653697 NGX_HTTP_VHOST_TRAFFIC_STATUS_DEFAULT_SUM_KEY );
654-
655- ngx_conf_merge_ptr_value ( conf -> filter_vars , prev -> filter_vars , NULL );
698+ ngx_conf_merge_value ( conf -> average_method , prev -> average_method ,
699+ NGX_HTTP_VHOST_TRAFFIC_STATUS_AVERAGE_METHOD_AMM );
656700
657701 name = ctx -> shm_name ;
658702
0 commit comments