Mercurial > hg > nginx
comparison src/http/modules/ngx_http_geo_module.c @ 2369:12e8e0045096 radix_with_skip
add radix tree skip node
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 03 Dec 2008 13:26:02 +0000 |
parents | 8522a901df2f |
children |
comparison
equal
deleted
inserted
replaced
2368:62be1c4edfba | 2369:12e8e0045096 |
---|---|
169 ngx_http_geo_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) | 169 ngx_http_geo_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) |
170 { | 170 { |
171 char *rv; | 171 char *rv; |
172 size_t len; | 172 size_t len; |
173 ngx_str_t *value, name; | 173 ngx_str_t *value, name; |
174 ngx_uint_t i; | 174 ngx_uint_t i, count; |
175 ngx_conf_t save; | 175 ngx_conf_t save; |
176 ngx_pool_t *pool; | 176 ngx_pool_t *pool; |
177 ngx_array_t *a; | 177 ngx_array_t *a; |
178 ngx_http_variable_t *var; | 178 ngx_http_variable_t *var; |
179 ngx_http_geo_conf_ctx_t ctx; | 179 ngx_http_geo_conf_ctx_t ctx; |
266 var->data = (uintptr_t) ctx.tree; | 266 var->data = (uintptr_t) ctx.tree; |
267 | 267 |
268 ngx_destroy_pool(ctx.temp_pool); | 268 ngx_destroy_pool(ctx.temp_pool); |
269 ngx_destroy_pool(pool); | 269 ngx_destroy_pool(pool); |
270 | 270 |
271 if (ngx_radix32tree_find(ctx.tree, 0) != NGX_RADIX_NO_VALUE) { | 271 if (ngx_radix32tree_find(ctx.tree, 0) == NGX_RADIX_NO_VALUE) { |
272 return rv; | 272 |
273 } | 273 if (ngx_radix32tree_insert(ctx.tree, 0, 0, |
274 | 274 (uintptr_t) &ngx_http_variable_null_value) |
275 if (ngx_radix32tree_insert(ctx.tree, 0, 0, | 275 == NGX_ERROR) |
276 (uintptr_t) &ngx_http_variable_null_value) | 276 { |
277 == NGX_ERROR) | 277 return NGX_CONF_ERROR; |
278 { | 278 } |
279 return NGX_CONF_ERROR; | 279 } |
280 } | 280 |
281 count = ctx.tree->count; | |
282 | |
283 ngx_radix32tree_compress(ctx.tree); | |
284 | |
285 ngx_log_error(NGX_LOG_NOTICE, cf->log, 0, | |
286 "\"%V\" geo tree has been compressed as %ui/%ui", | |
287 &name, ctx.tree->count, count); | |
281 } | 288 } |
282 | 289 |
283 return rv; | 290 return rv; |
284 } | 291 } |
285 | 292 |