diff options
author | 2018-11-16 14:42:49 +0100 | |
---|---|---|
committer | 2018-11-16 08:42:49 -0500 | |
commit | 8dbe1fbee227d6830d61a169eb947f4c243c76d6 (patch) | |
tree | 31b34683a80a659e76e2076865d76a77ef48dbea /plugin/backend_lookup.go | |
parent | 3f6dfba1f0e9cd6c858f88891550d09904b7814d (diff) | |
download | coredns-8dbe1fbee227d6830d61a169eb947f4c243c76d6.tar.gz coredns-8dbe1fbee227d6830d61a169eb947f4c243c76d6.tar.zst coredns-8dbe1fbee227d6830d61a169eb947f4c243c76d6.zip |
Set SOA record TTL as min of TTL/MINIMUM (#2295)
* Set SOA record TTL as min of TTL/MINIMUM
According to
https://tools.ietf.org/html/rfc2308#section-3:
The TTL of this record is set from the minimum
of the MINIMUM field of the SOA record and the
TTL of the SOA itself, and indicates how long a
resolver may cache the negative answer.
Set the TTL accordingly so as to not always
negative cache SOA records for 300 seconds.
* Inline min func
* Update SOA record tests
* Fix types
Diffstat (limited to 'plugin/backend_lookup.go')
-rw-r--r-- | plugin/backend_lookup.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/plugin/backend_lookup.go b/plugin/backend_lookup.go index 77e08174f..090f36215 100644 --- a/plugin/backend_lookup.go +++ b/plugin/backend_lookup.go @@ -391,7 +391,13 @@ func NS(b ServiceBackend, zone string, state request.Request, opt Options) (reco // SOA returns a SOA record from the backend. func SOA(b ServiceBackend, zone string, state request.Request, opt Options) ([]dns.RR, error) { - header := dns.RR_Header{Name: zone, Rrtype: dns.TypeSOA, Ttl: 300, Class: dns.ClassINET} + minTTL := b.MinTTL(state) + ttl := uint32(300) + if minTTL < ttl { + ttl = minTTL + } + + header := dns.RR_Header{Name: zone, Rrtype: dns.TypeSOA, Ttl: ttl, Class: dns.ClassINET} Mbox := hostmaster + "." Ns := "ns.dns." @@ -407,7 +413,7 @@ func SOA(b ServiceBackend, zone string, state request.Request, opt Options) ([]d Refresh: 7200, Retry: 1800, Expire: 86400, - Minttl: b.MinTTL(state), + Minttl: minTTL, } return []dns.RR{soa}, nil } |