From 22bd9fb530bfe265071fb178dbfc4b2566411552 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sun, 11 Dec 2016 11:49:24 +0900 Subject: [PATCH] nghttpx: Set DNS cache expire date for error and ok statuses only --- src/shrpx_dns_tracker.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/shrpx_dns_tracker.cc b/src/shrpx_dns_tracker.cc index 672917c4..74ab83b0 100644 --- a/src/shrpx_dns_tracker.cc +++ b/src/shrpx_dns_tracker.cc @@ -65,7 +65,12 @@ ResolverEntry DNSTracker::make_entry(std::unique_ptr resolv, ent.resolv = std::move(resolv); ent.host = std::move(host); ent.status = status; - ent.expiry = ev_now(loop_) + dnsconf.timeout.cache; + switch (status) { + case DNS_STATUS_ERROR: + case DNS_STATUS_OK: + ent.expiry = ev_now(loop_) + dnsconf.timeout.cache; + break; + } if (result) { ent.result = *result; } @@ -75,8 +80,16 @@ ResolverEntry DNSTracker::make_entry(std::unique_ptr resolv, void DNSTracker::update_entry(ResolverEntry &ent, std::unique_ptr resolv, int status, const Address *result) { + auto &dnsconf = get_config()->dns; + ent.resolv = std::move(resolv); ent.status = status; + switch (status) { + case DNS_STATUS_ERROR: + case DNS_STATUS_OK: + ent.expiry = ev_now(loop_) + dnsconf.timeout.cache; + break; + } if (result) { ent.result = *result; }