mirror of
https://github.com/nginx/nginx.git
synced 2025-06-06 00:42:40 +08:00
Resolver: limited CNAME recursion.
Previously, the recursion was only limited for cached responses.
This commit is contained in:
parent
a3d42258d9
commit
fe89d99796
@ -2001,11 +2001,33 @@ ngx_resolver_process_a(ngx_resolver_t *r, u_char *buf, size_t last,
|
||||
|
||||
ngx_queue_insert_head(&r->name_expire_queue, &rn->queue);
|
||||
|
||||
ngx_resolver_free(r, rn->query);
|
||||
rn->query = NULL;
|
||||
#if (NGX_HAVE_INET6)
|
||||
rn->query6 = NULL;
|
||||
#endif
|
||||
|
||||
ctx = rn->waiting;
|
||||
rn->waiting = NULL;
|
||||
|
||||
if (ctx) {
|
||||
|
||||
if (ctx->recursion++ >= NGX_RESOLVER_MAX_RECURSION) {
|
||||
|
||||
/* unlock name mutex */
|
||||
|
||||
do {
|
||||
ctx->state = NGX_RESOLVE_NXDOMAIN;
|
||||
next = ctx->next;
|
||||
|
||||
ctx->handler(ctx);
|
||||
|
||||
ctx = next;
|
||||
} while (ctx);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
for (next = ctx; next; next = next->next) {
|
||||
next->node = NULL;
|
||||
}
|
||||
@ -2013,12 +2035,6 @@ ngx_resolver_process_a(ngx_resolver_t *r, u_char *buf, size_t last,
|
||||
(void) ngx_resolve_name_locked(r, ctx, &name);
|
||||
}
|
||||
|
||||
ngx_resolver_free(r, rn->query);
|
||||
rn->query = NULL;
|
||||
#if (NGX_HAVE_INET6)
|
||||
rn->query6 = NULL;
|
||||
#endif
|
||||
|
||||
/* unlock name mutex */
|
||||
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user