comparison src/core/ngx_resolver.c @ 1969:41fd9a2e0755

limit CNAME recursion
author Igor Sysoev <igor@sysoev.ru>
date Sat, 12 Apr 2008 07:29:20 +0000
parents 4a4b15c9c474
children b52cb9bf2064
comparison
equal deleted inserted replaced
1968:3c540ad3021f 1969:41fd9a2e0755
433 return NGX_OK; 433 return NGX_OK;
434 } 434 }
435 435
436 /* NGX_RESOLVE_CNAME */ 436 /* NGX_RESOLVE_CNAME */
437 437
438 ctx->name.len = rn->cnlen; 438 if (ctx->recursion++ < NGX_RESOLVER_MAX_RECURSION) {
439 ctx->name.data = rn->u.cname; 439
440 440 ctx->name.len = rn->cnlen;
441 return ngx_resolve_name_locked(r, ctx); 441 ctx->name.data = rn->u.cname;
442
443 return ngx_resolve_name_locked(r, ctx);
444 }
445
446 ctx->next = rn->waiting;
447 rn->waiting = NULL;
448
449 /* unlock name mutex */
450
451 do {
452 ctx->state = NGX_RESOLVE_NXDOMAIN;
453 next = ctx->next;
454
455 ctx->handler(ctx);
456
457 ctx = next;
458 } while (ctx);
459
460 return NGX_OK;
442 } 461 }
443 462
444 if (rn->waiting) { 463 if (rn->waiting) {
445 464
446 ctx->next = rn->waiting; 465 ctx->next = rn->waiting;