# HG changeset patch # User Igor Sysoev # Date 1306758977 0 # Node ID fa4612bfb9faca50a0584ac1dff1d19986d0bdd7 # Parent 105841a157b9463f99d37577361ef7bf66e33284 change ngx_http_map_find(): use case sensitive regexes diff --git a/src/http/modules/ngx_http_map_module.c b/src/http/modules/ngx_http_map_module.c --- a/src/http/modules/ngx_http_map_module.c +++ b/src/http/modules/ngx_http_map_module.c @@ -111,7 +111,6 @@ ngx_http_map_variable(ngx_http_request_t size_t len; ngx_str_t val; - ngx_uint_t key; ngx_http_variable_value_t *value; ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, @@ -127,9 +126,7 @@ ngx_http_map_variable(ngx_http_request_t len--; } - key = ngx_hash_strlow(val.data, val.data, len); - - value = ngx_http_map_find(r, &map->map, key, val.data, len, &val); + value = ngx_http_map_find(r, &map->map, &val); if (value == NULL) { value = map->default_value; diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c --- a/src/http/ngx_http_variables.c +++ b/src/http/ngx_http_variables.c @@ -1661,14 +1661,30 @@ ngx_http_variable_pid(ngx_http_request_t void * -ngx_http_map_find(ngx_http_request_t *r, ngx_http_map_t *map, ngx_uint_t key, - u_char *text, size_t len, ngx_str_t *match) +ngx_http_map_find(ngx_http_request_t *r, ngx_http_map_t *map, ngx_str_t *match) { - void *p; - - p = ngx_hash_find_combined(&map->hash, key, text, len); - if (p) { - return p; + void *value; + u_char *low; + size_t len; + ngx_uint_t key; + + len = match->len; + + if (len) { + low = ngx_pnalloc(r->pool, len); + if (low == NULL) { + return NULL; + } + + } else { + low = NULL; + } + + key = ngx_hash_strlow(low, match->data, len); + + value = ngx_hash_find_combined(&map->hash, key, low, len); + if (value) { + return value; } #if (NGX_PCRE) diff --git a/src/http/ngx_http_variables.h b/src/http/ngx_http_variables.h --- a/src/http/ngx_http_variables.h +++ b/src/http/ngx_http_variables.h @@ -100,7 +100,7 @@ typedef struct { void *ngx_http_map_find(ngx_http_request_t *r, ngx_http_map_t *map, - ngx_uint_t key, u_char *text, size_t len, ngx_str_t *match); + ngx_str_t *match); ngx_int_t ngx_http_variables_add_core_vars(ngx_conf_t *cf);