comparison src/core/ngx_resolver.c @ 6456:c94aba230a5a

Resolver: introduced valid field in resolver responses. It hints the amount of time a response could be considered as valid.
author Dmitry Volyntsev <xeioex@nginx.com>
date Wed, 23 Mar 2016 17:44:36 +0300
parents a6a5bacf6b74
children a6711b85da83
comparison
equal deleted inserted replaced
6455:ad2360782ecd 6456:c94aba230a5a
549 549
550 /* unlock name mutex */ 550 /* unlock name mutex */
551 551
552 do { 552 do {
553 ctx->state = NGX_OK; 553 ctx->state = NGX_OK;
554 ctx->valid = rn->valid;
554 ctx->naddrs = naddrs; 555 ctx->naddrs = naddrs;
555 556
556 if (addrs == NULL) { 557 if (addrs == NULL) {
557 ctx->addrs = &ctx->addr; 558 ctx->addrs = &ctx->addr;
558 ctx->addr.sockaddr = (struct sockaddr *) &ctx->sin; 559 ctx->addr.sockaddr = (struct sockaddr *) &ctx->sin;
595 596
596 /* unlock name mutex */ 597 /* unlock name mutex */
597 598
598 do { 599 do {
599 ctx->state = NGX_RESOLVE_NXDOMAIN; 600 ctx->state = NGX_RESOLVE_NXDOMAIN;
601 ctx->valid = ngx_time() + (r->valid ? r->valid : 10);
600 next = ctx->next; 602 next = ctx->next;
601 603
602 ctx->handler(ctx); 604 ctx->handler(ctx);
603 605
604 ctx = next; 606 ctx = next;
857 ctx->name.data = name; 859 ctx->name.data = name;
858 860
859 /* unlock addr mutex */ 861 /* unlock addr mutex */
860 862
861 ctx->state = NGX_OK; 863 ctx->state = NGX_OK;
864 ctx->valid = rn->valid;
862 865
863 ctx->handler(ctx); 866 ctx->handler(ctx);
864 867
865 ngx_resolver_free(r, name); 868 ngx_resolver_free(r, name);
866 869
1946 /* unlock name mutex */ 1949 /* unlock name mutex */
1947 1950
1948 while (next) { 1951 while (next) {
1949 ctx = next; 1952 ctx = next;
1950 ctx->state = code; 1953 ctx->state = code;
1954 ctx->valid = ngx_time() + (r->valid ? r->valid : 10);
1951 next = ctx->next; 1955 next = ctx->next;
1952 1956
1953 ctx->handler(ctx); 1957 ctx->handler(ctx);
1954 } 1958 }
1955 1959
2260 /* unlock name mutex */ 2264 /* unlock name mutex */
2261 2265
2262 while (next) { 2266 while (next) {
2263 ctx = next; 2267 ctx = next;
2264 ctx->state = NGX_OK; 2268 ctx->state = NGX_OK;
2269 ctx->valid = rn->valid;
2265 ctx->naddrs = naddrs; 2270 ctx->naddrs = naddrs;
2266 2271
2267 if (addrs == NULL) { 2272 if (addrs == NULL) {
2268 ctx->addrs = &ctx->addr; 2273 ctx->addrs = &ctx->addr;
2269 ctx->addr.sockaddr = (struct sockaddr *) &ctx->sin; 2274 ctx->addr.sockaddr = (struct sockaddr *) &ctx->sin;
2539 /* unlock addr mutex */ 2544 /* unlock addr mutex */
2540 2545
2541 while (next) { 2546 while (next) {
2542 ctx = next; 2547 ctx = next;
2543 ctx->state = code; 2548 ctx->state = code;
2549 ctx->valid = ngx_time() + (r->valid ? r->valid : 10);
2544 next = ctx->next; 2550 next = ctx->next;
2545 2551
2546 ctx->handler(ctx); 2552 ctx->handler(ctx);
2547 } 2553 }
2548 2554
2673 /* unlock addr mutex */ 2679 /* unlock addr mutex */
2674 2680
2675 while (next) { 2681 while (next) {
2676 ctx = next; 2682 ctx = next;
2677 ctx->state = NGX_OK; 2683 ctx->state = NGX_OK;
2684 ctx->valid = rn->valid;
2678 ctx->name = name; 2685 ctx->name = name;
2679 next = ctx->next; 2686 next = ctx->next;
2680 2687
2681 ctx->handler(ctx); 2688 ctx->handler(ctx);
2682 } 2689 }