Mercurial > hg > nginx
comparison src/core/ngx_resolver.c @ 1961:99b9feacccb4
return NXDOMAIN for ".." in host name
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 09 Apr 2008 14:45:39 +0000 |
parents | 1609b3c3d604 |
children | 14463ae77723 |
comparison
equal
deleted
inserted
replaced
1960:1609b3c3d604 | 1961:99b9feacccb4 |
---|---|
367 static ngx_int_t | 367 static ngx_int_t |
368 ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx) | 368 ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx) |
369 { | 369 { |
370 uint32_t hash; | 370 uint32_t hash; |
371 in_addr_t addr, *addrs; | 371 in_addr_t addr, *addrs; |
372 ngx_int_t rc; | |
372 ngx_uint_t naddrs; | 373 ngx_uint_t naddrs; |
373 ngx_resolver_ctx_t *next; | 374 ngx_resolver_ctx_t *next; |
374 ngx_resolver_node_t *rn; | 375 ngx_resolver_node_t *rn; |
375 | 376 |
376 hash = ngx_crc32_short(ctx->name.data, ctx->name.len); | 377 hash = ngx_crc32_short(ctx->name.data, ctx->name.len); |
483 rn->query = NULL; | 484 rn->query = NULL; |
484 | 485 |
485 ngx_rbtree_insert(&r->name_rbtree, &rn->node); | 486 ngx_rbtree_insert(&r->name_rbtree, &rn->node); |
486 } | 487 } |
487 | 488 |
488 if (ngx_resolver_create_name_query(rn, ctx) != NGX_OK) { | 489 rc = ngx_resolver_create_name_query(rn, ctx); |
490 | |
491 if (rc == NGX_ERROR) { | |
489 goto failed; | 492 goto failed; |
493 } | |
494 | |
495 if (rc == NGX_DECLINED) { | |
496 ngx_rbtree_delete(&r->name_rbtree, &rn->node); | |
497 | |
498 ngx_resolver_free(r, rn->query); | |
499 ngx_resolver_free(r, rn->name); | |
500 ngx_resolver_free(r, rn); | |
501 | |
502 ctx->state = NGX_RESOLVE_NXDOMAIN; | |
503 ctx->handler(ctx); | |
504 | |
505 return NGX_OK; | |
490 } | 506 } |
491 | 507 |
492 if (ngx_resolver_send_query(r, rn) != NGX_OK) { | 508 if (ngx_resolver_send_query(r, rn) != NGX_OK) { |
493 goto failed; | 509 goto failed; |
494 } | 510 } |
1694 if (*s != '.') { | 1710 if (*s != '.') { |
1695 *p = *s; | 1711 *p = *s; |
1696 len++; | 1712 len++; |
1697 | 1713 |
1698 } else { | 1714 } else { |
1715 if (len == 0) { | |
1716 return NGX_DECLINED; | |
1717 } | |
1718 | |
1699 *p = (u_char) len; | 1719 *p = (u_char) len; |
1700 len = 0; | 1720 len = 0; |
1701 } | 1721 } |
1702 | 1722 |
1703 p--; | 1723 p--; |