Mercurial > hg > nginx-quic
changeset 1742:268b81386fe4
no answers in DNS response should be NXDOMAIN
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 16 Dec 2007 20:47:55 +0000 |
parents | 0829024c924d |
children | 4fc402c3ec73 |
files | src/core/ngx_resolver.c |
diffstat | 1 files changed, 13 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_resolver.c +++ b/src/core/ngx_resolver.c @@ -67,9 +67,9 @@ static void ngx_resolver_read_response(n static void ngx_resolver_process_response(ngx_resolver_t *r, u_char *buf, size_t n); static void ngx_resolver_process_a(ngx_resolver_t *r, u_char *buf, size_t n, - ngx_uint_t ident, ngx_uint_t code, ngx_uint_t nan, ngx_uint_t i); + ngx_uint_t ident, ngx_uint_t code, ngx_uint_t nan, ngx_uint_t ans); static void ngx_resolver_process_ptr(ngx_resolver_t *r, u_char *buf, size_t n, - ngx_uint_t ident, ngx_uint_t code); + ngx_uint_t ident, ngx_uint_t code, ngx_uint_t nan); static ngx_resolver_node_t *ngx_resolver_lookup_name(ngx_resolver_t *r, ngx_str_t *name, uint32_t hash); static ngx_resolver_node_t *ngx_resolver_lookup_addr(ngx_resolver_t *r, @@ -884,11 +884,6 @@ ngx_resolver_process_response(ngx_resolv goto done; } - if (code == 0 && nan == 0) { - err = "no answers in DNS response"; - goto done; - } - i = sizeof(ngx_resolver_query_t); while (i < (ngx_uint_t) n) { @@ -934,13 +929,13 @@ found: case NGX_RESOLVE_A: ngx_resolver_process_a(r, buf, n, ident, code, nan, - i + sizeof(ngx_resolver_qs_t)); + i + sizeof(ngx_resolver_qs_t)); break; case NGX_RESOLVE_PTR: - ngx_resolver_process_ptr(r, buf, n, ident, code); + ngx_resolver_process_ptr(r, buf, n, ident, code, nan); break; @@ -1006,6 +1001,10 @@ ngx_resolver_process_a(ngx_resolver_t *r goto failed; } + if (code == 0 && nan == 0) { + code = 3; /* NXDOMAIN */ + } + if (code) { next = rn->waiting; rn->waiting = NULL; @@ -1252,7 +1251,7 @@ failed: static void ngx_resolver_process_ptr(ngx_resolver_t *r, u_char *buf, size_t n, - ngx_uint_t ident, ngx_uint_t code) + ngx_uint_t ident, ngx_uint_t code, ngx_uint_t nan) { char *err; size_t len; @@ -1309,6 +1308,10 @@ ngx_resolver_process_ptr(ngx_resolver_t goto failed; } + if (code == 0 && nan == 0) { + code = 3; /* NXDOMAIN */ + } + if (code) { next = rn->waiting; rn->waiting = NULL;