Mercurial > hg > nginx
comparison src/core/ngx_resolver.c @ 6360:93d70d87914c stable-1.8
Resolver: limited CNAME recursion.
Previously, the recursion was only limited for cached responses.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Tue, 26 Jan 2016 16:47:14 +0300 |
parents | dac6eda40475 |
children |
comparison
equal
deleted
inserted
replaced
6359:dac6eda40475 | 6360:93d70d87914c |
---|---|
1979 rn->valid = ngx_time() + (r->valid ? r->valid : (time_t) rn->ttl); | 1979 rn->valid = ngx_time() + (r->valid ? r->valid : (time_t) rn->ttl); |
1980 rn->expire = ngx_time() + r->expire; | 1980 rn->expire = ngx_time() + r->expire; |
1981 | 1981 |
1982 ngx_queue_insert_head(&r->name_expire_queue, &rn->queue); | 1982 ngx_queue_insert_head(&r->name_expire_queue, &rn->queue); |
1983 | 1983 |
1984 ngx_resolver_free(r, rn->query); | |
1985 rn->query = NULL; | |
1986 #if (NGX_HAVE_INET6) | |
1987 rn->query6 = NULL; | |
1988 #endif | |
1989 | |
1984 ctx = rn->waiting; | 1990 ctx = rn->waiting; |
1985 rn->waiting = NULL; | 1991 rn->waiting = NULL; |
1986 | 1992 |
1987 if (ctx) { | 1993 if (ctx) { |
1988 | 1994 |
1995 if (ctx->recursion++ >= NGX_RESOLVER_MAX_RECURSION) { | |
1996 | |
1997 /* unlock name mutex */ | |
1998 | |
1999 do { | |
2000 ctx->state = NGX_RESOLVE_NXDOMAIN; | |
2001 next = ctx->next; | |
2002 | |
2003 ctx->handler(ctx); | |
2004 | |
2005 ctx = next; | |
2006 } while (ctx); | |
2007 | |
2008 return; | |
2009 } | |
2010 | |
1989 for (next = ctx; next; next = next->next) { | 2011 for (next = ctx; next; next = next->next) { |
1990 next->node = NULL; | 2012 next->node = NULL; |
1991 } | 2013 } |
1992 | 2014 |
1993 (void) ngx_resolve_name_locked(r, ctx, &name); | 2015 (void) ngx_resolve_name_locked(r, ctx, &name); |
1994 } | 2016 } |
1995 | |
1996 ngx_resolver_free(r, rn->query); | |
1997 rn->query = NULL; | |
1998 #if (NGX_HAVE_INET6) | |
1999 rn->query6 = NULL; | |
2000 #endif | |
2001 | 2017 |
2002 /* unlock name mutex */ | 2018 /* unlock name mutex */ |
2003 | 2019 |
2004 return; | 2020 return; |
2005 } | 2021 } |