aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_resolver.c
diff options
context:
space:
mode:
authorDmitry Volyntsev <xeioex@nginx.com>2016-03-23 17:44:36 +0300
committerDmitry Volyntsev <xeioex@nginx.com>2016-03-23 17:44:36 +0300
commit98f222c6c115e578d95cf7cf4e657dac32d0f44c (patch)
tree281c7e5cb5b35dba3a6b1f5f2930eca4dbc0198e /src/core/ngx_resolver.c
parent0f4315f998bfedbd478c8215994414f1526bfd40 (diff)
downloadnginx-98f222c6c115e578d95cf7cf4e657dac32d0f44c.tar.gz
nginx-98f222c6c115e578d95cf7cf4e657dac32d0f44c.zip
Resolver: introduced valid field in resolver responses.
It hints the amount of time a response could be considered as valid.
Diffstat (limited to 'src/core/ngx_resolver.c')
-rw-r--r--src/core/ngx_resolver.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 7f0d3ad2a..40eefc5e3 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -551,6 +551,7 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx,
do {
ctx->state = NGX_OK;
+ ctx->valid = rn->valid;
ctx->naddrs = naddrs;
if (addrs == NULL) {
@@ -597,6 +598,7 @@ ngx_resolve_name_locked(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx,
do {
ctx->state = NGX_RESOLVE_NXDOMAIN;
+ ctx->valid = ngx_time() + (r->valid ? r->valid : 10);
next = ctx->next;
ctx->handler(ctx);
@@ -859,6 +861,7 @@ ngx_resolve_addr(ngx_resolver_ctx_t *ctx)
/* unlock addr mutex */
ctx->state = NGX_OK;
+ ctx->valid = rn->valid;
ctx->handler(ctx);
@@ -1948,6 +1951,7 @@ ngx_resolver_process_a(ngx_resolver_t *r, u_char *buf, size_t n,
while (next) {
ctx = next;
ctx->state = code;
+ ctx->valid = ngx_time() + (r->valid ? r->valid : 10);
next = ctx->next;
ctx->handler(ctx);
@@ -2262,6 +2266,7 @@ ngx_resolver_process_a(ngx_resolver_t *r, u_char *buf, size_t n,
while (next) {
ctx = next;
ctx->state = NGX_OK;
+ ctx->valid = rn->valid;
ctx->naddrs = naddrs;
if (addrs == NULL) {
@@ -2541,6 +2546,7 @@ valid:
while (next) {
ctx = next;
ctx->state = code;
+ ctx->valid = ngx_time() + (r->valid ? r->valid : 10);
next = ctx->next;
ctx->handler(ctx);
@@ -2675,6 +2681,7 @@ ptr:
while (next) {
ctx = next;
ctx->state = NGX_OK;
+ ctx->valid = rn->valid;
ctx->name = name;
next = ctx->next;