comparison src/core/ngx_resolver.c @ 3306:61bdaac6c668

fix resolving an empty name (".")
author Igor Sysoev <igor@sysoev.ru>
date Wed, 11 Nov 2009 14:27:24 +0000
parents 0b6277a58a2d
children 34e99a97fbd6
comparison
equal deleted inserted replaced
3305:8017f9bda3f6 3306:61bdaac6c668
1717 1717
1718 static ngx_int_t 1718 static ngx_int_t
1719 ngx_resolver_create_name_query(ngx_resolver_node_t *rn, ngx_resolver_ctx_t *ctx) 1719 ngx_resolver_create_name_query(ngx_resolver_node_t *rn, ngx_resolver_ctx_t *ctx)
1720 { 1720 {
1721 u_char *p, *s; 1721 u_char *p, *s;
1722 size_t len; 1722 size_t len, nlen;
1723 ngx_uint_t ident; 1723 ngx_uint_t ident;
1724 ngx_resolver_qs_t *qs; 1724 ngx_resolver_qs_t *qs;
1725 ngx_resolver_query_t *query; 1725 ngx_resolver_query_t *query;
1726 1726
1727 len = sizeof(ngx_resolver_query_t) 1727 nlen = ctx->name.len ? (1 + ctx->name.len + 1) : 1;
1728 + 1 + ctx->name.len + 1 + sizeof(ngx_resolver_qs_t); 1728
1729 len = sizeof(ngx_resolver_query_t) + nlen + sizeof(ngx_resolver_qs_t);
1729 1730
1730 p = ngx_resolver_calloc(ctx->resolver, len); 1731 p = ngx_resolver_calloc(ctx->resolver, len);
1731 if (p == NULL) { 1732 if (p == NULL) {
1732 return NGX_ERROR; 1733 return NGX_ERROR;
1733 } 1734 }
1752 query->nqs_hi = 0; query->nqs_lo = 1; 1753 query->nqs_hi = 0; query->nqs_lo = 1;
1753 query->nan_hi = 0; query->nan_lo = 0; 1754 query->nan_hi = 0; query->nan_lo = 0;
1754 query->nns_hi = 0; query->nns_lo = 0; 1755 query->nns_hi = 0; query->nns_lo = 0;
1755 query->nar_hi = 0; query->nar_lo = 0; 1756 query->nar_hi = 0; query->nar_lo = 0;
1756 1757
1757 p += sizeof(ngx_resolver_query_t) 1758 p += sizeof(ngx_resolver_query_t) + nlen;
1758 + ctx->name.len ? (1 + ctx->name.len + 1) : 1;
1759 1759
1760 qs = (ngx_resolver_qs_t *) p; 1760 qs = (ngx_resolver_qs_t *) p;
1761 1761
1762 /* query type */ 1762 /* query type */
1763 qs->type_hi = 0; qs->type_lo = (u_char) ctx->type; 1763 qs->type_hi = 0; qs->type_lo = (u_char) ctx->type;