diff --git a/ngx_http_limit_traffic_rate_filter_module.c b/ngx_http_limit_traffic_rate_filter_module.c index a96d015..37f7848 100644 --- a/ngx_http_limit_traffic_rate_filter_module.c +++ b/ngx_http_limit_traffic_rate_filter_module.c @@ -194,7 +194,7 @@ ngx_http_limit_traffic_rate_filter_handler(ngx_http_request_t *r) lir->conn++; ngx_http_limit_traffic_rate_filter_request_queue_t *req; req = ngx_slab_alloc_locked(shpool, sizeof(ngx_http_limit_traffic_rate_filter_request_queue_t)); - if (node == NULL) { + if (req == NULL) { ngx_shmtx_unlock(&shpool->mutex); return NGX_HTTP_SERVICE_UNAVAILABLE; } @@ -530,6 +530,7 @@ ngx_http_limit_traffic_rate_filter_create_loc_conf(ngx_conf_t *cf) return NGX_CONF_ERROR; } conf->limit_traffic_rate = NGX_CONF_UNSET_SIZE; + conf->shm_zone= NGX_CONF_UNSET_PTR; return conf; } @@ -540,6 +541,7 @@ ngx_http_limit_traffic_rate_filter_merge_loc_conf(ngx_conf_t *cf, void *parent, ngx_http_limit_traffic_rate_filter_conf_t *conf = child; ngx_conf_merge_size_value(conf->limit_traffic_rate, prev->limit_traffic_rate, 0); + ngx_conf_merge_ptr_value(conf->shm_zone, prev->shm_zone, NULL); return NGX_CONF_OK; } @@ -772,10 +774,6 @@ ngx_http_limit_traffic_rate(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ngx_int_t n; ngx_str_t *value; - if (lircf->shm_zone) { - return "is duplicate"; - } - value = cf->args->elts; lircf->shm_zone = ngx_shared_memory_add(cf, &value[1], 0,