Mercurial > hg > nginx-vendor-current
diff src/core/ngx_resolver.c @ 528:005a70f9573b NGINX_0_8_16
nginx 0.8.16
*) Feature: the "image_filter_transparency" directive.
*) Bugfix: "addition_types" directive was incorrectly named
"addtion_types".
*) Bugfix: resolver cache poisoning.
Thanks to Matthew Dempsky.
*) Bugfix: memory leak in resolver.
Thanks to Matthew Dempsky.
*) Bugfix: invalid request line in $request variable was written in
access_log only if error_log was set to "info" or "debug" level.
*) Bugfix: in PNG alpha-channel support in the
ngx_http_image_filter_module.
*) Bugfix: nginx always added "Vary: Accept-Encoding" response header
line, if both "gzip_static" and "gzip_vary" were on.
*) Bugfix: in UTF-8 encoding support by "try_files" directive in
nginx/Windows.
*) Bugfix: in "post_action" directive usage; the bug had appeared in
0.8.11.
Thanks to Igor Artemiev.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 22 Sep 2009 00:00:00 +0400 |
parents | ed5e10fb40fc |
children | c04fa65fe604 |
line wrap: on
line diff
--- a/src/core/ngx_resolver.c +++ b/src/core/ngx_resolver.c @@ -1149,6 +1149,8 @@ ngx_resolver_process_a(ngx_resolver_t *r goto failed; } + ngx_resolver_free(r, name.data); + if (code == 0 && nan == 0) { code = 3; /* NXDOMAIN */ } @@ -1400,6 +1402,8 @@ failed: /* unlock name mutex */ + ngx_resolver_free(r, name.data); + return; } @@ -1595,7 +1599,6 @@ static ngx_resolver_node_t * ngx_resolver_lookup_name(ngx_resolver_t *r, ngx_str_t *name, uint32_t hash) { ngx_int_t rc; - size_t len; ngx_rbtree_node_t *node, *sentinel; ngx_resolver_node_t *rn; @@ -1619,9 +1622,7 @@ ngx_resolver_lookup_name(ngx_resolver_t do { rn = (ngx_resolver_node_t *) node; - len = (name->len > (size_t) rn->nlen) ? rn->nlen : name->len; - - rc = ngx_strncmp(name->data, rn->name, len); + rc = ngx_memn2cmp(name->data, rn->name, name->len, rn->nlen); if (rc == 0) { return rn; @@ -1675,7 +1676,6 @@ static void ngx_resolver_rbtree_insert_value(ngx_rbtree_node_t *temp, ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel) { - size_t len; ngx_rbtree_node_t **p; ngx_resolver_node_t *rn, *rn_temp; @@ -1694,10 +1694,8 @@ ngx_resolver_rbtree_insert_value(ngx_rbt rn = (ngx_resolver_node_t *) node; rn_temp = (ngx_resolver_node_t *) temp; - len = (rn->nlen > rn_temp->nlen) ? rn_temp->nlen : rn->nlen; - - p = (ngx_strncmp(rn->name, rn_temp->name, len) < 0) - ? &temp->left : &temp->right; + p = (ngx_memn2cmp(rn->name, rn_temp->name, rn->nlen, rn_temp->nlen) + < 0) ? &temp->left : &temp->right; } if (*p == sentinel) {