]> git.kaiwu.me - nginx.git/commitdiff
map: strip final dot before looking up in a map of hostnames.
authorRuslan Ermilov <ru@nginx.com>
Fri, 29 Jun 2012 20:33:26 +0000 (20:33 +0000)
committerRuslan Ermilov <ru@nginx.com>
Fri, 29 Jun 2012 20:33:26 +0000 (20:33 +0000)
(closes #182)

src/http/modules/ngx_http_map_module.c

index 2fe925f1cc1fd29d33a3babb4e967287c9ed18a0..e8a4ab4cc18b61e6c276b0224bc0408f31fbf2bc 100644 (file)
@@ -110,7 +110,6 @@ ngx_http_map_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v,
 {
     ngx_http_map_ctx_t  *map = (ngx_http_map_ctx_t *) data;
 
-    size_t                      len;
     ngx_str_t                   val;
     ngx_http_variable_value_t  *value;
 
@@ -121,10 +120,8 @@ ngx_http_map_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v,
         return NGX_ERROR;
     }
 
-    len = val.len;
-
-    if (len && map->hostnames && val.data[len - 1] == '.') {
-        len--;
+    if (map->hostnames && val.len > 0 && val.data[val.len - 1] == '.') {
+        val.len--;
     }
 
     value = ngx_http_map_find(r, &map->map, &val);
@@ -281,6 +278,8 @@ ngx_http_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     map->default_value = ctx.default_value ? ctx.default_value:
                                              &ngx_http_variable_null_value;
 
+    map->hostnames = ctx.hostnames;
+
     hash.key = ngx_hash_key_lc;
     hash.max_size = mcf->hash_max_size;
     hash.bucket_size = mcf->hash_bucket_size;