Mercurial > hg > nginx-vendor-current
diff src/http/modules/ngx_http_referer_module.c @ 630:ad6fee8052d7 NGINX_1_0_5
nginx 1.0.5
*) Change: now default SSL ciphers are "HIGH:!aNULL:!MD5".
Thanks to Rob Stradling.
*) Feature: the "referer_hash_max_size" and "referer_hash_bucket_size"
directives.
Thanks to Witold Filipczyk.
*) Feature: $uid_reset variable.
*) Bugfix: a segmentation fault might occur in a worker process, if a
caching was used.
Thanks to Lanshun Zhou.
*) Bugfix: worker processes may got caught in an endless loop during
reconfiguration, if a caching was used; the bug had appeared in
0.8.48.
Thanks to Maxim Dounin.
*) Bugfix: "stalled cache updating" alert.
Thanks to Maxim Dounin.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 19 Jul 2011 00:00:00 +0400 |
parents | 8246d8a2c2be |
children | 23ef0645ea57 |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_referer_module.c +++ b/src/http/modules/ngx_http_referer_module.c @@ -29,6 +29,9 @@ typedef struct { ngx_flag_t blocked_referer; ngx_hash_keys_arrays_t *keys; + + ngx_uint_t referer_hash_max_size; + ngx_uint_t referer_hash_bucket_size; } ngx_http_referer_conf_t; @@ -54,6 +57,20 @@ static ngx_command_t ngx_http_referer_c 0, NULL }, + { ngx_string("referer_hash_max_size"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, + ngx_conf_set_num_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_referer_conf_t, referer_hash_max_size), + NULL }, + + { ngx_string("referer_hash_bucket_size"), + NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, + ngx_conf_set_num_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_referer_conf_t, referer_hash_bucket_size), + NULL }, + ngx_null_command }; @@ -239,6 +256,8 @@ ngx_http_referer_create_conf(ngx_conf_t conf->no_referer = NGX_CONF_UNSET; conf->blocked_referer = NGX_CONF_UNSET; + conf->referer_hash_max_size = NGX_CONF_UNSET_UINT; + conf->referer_hash_bucket_size = NGX_CONF_UNSET_UINT; return conf; } @@ -260,6 +279,10 @@ ngx_http_referer_merge_conf(ngx_conf_t * #endif ngx_conf_merge_value(conf->no_referer, prev->no_referer, 0); ngx_conf_merge_value(conf->blocked_referer, prev->blocked_referer, 0); + ngx_conf_merge_uint_value(conf->referer_hash_max_size, + prev->referer_hash_max_size, 2048); + ngx_conf_merge_uint_value(conf->referer_hash_bucket_size, + prev->referer_hash_bucket_size, 64); return NGX_CONF_OK; } @@ -276,9 +299,16 @@ ngx_http_referer_merge_conf(ngx_conf_t * return NGX_CONF_ERROR; } + ngx_conf_merge_uint_value(conf->referer_hash_max_size, + prev->referer_hash_max_size, 2048); + ngx_conf_merge_uint_value(conf->referer_hash_bucket_size, + prev->referer_hash_bucket_size, 64); + conf->referer_hash_bucket_size = ngx_align(conf->referer_hash_bucket_size, + ngx_cacheline_size); + hash.key = ngx_hash_key_lc; - hash.max_size = 2048; /* TODO: referer_hash_max_size; */ - hash.bucket_size = 64; /* TODO: referer_hash_bucket_size; */ + hash.max_size = conf->referer_hash_max_size; + hash.bucket_size = conf->referer_hash_bucket_size; hash.name = "referers_hash"; hash.pool = cf->pool;