Browse Source

Clarify handling TTL when loading zone data

(related to #60)
Ask Bjørn Hansen 10 years ago
parent
commit
06095266cf
3 changed files with 6 additions and 3 deletions
  1. 2 1
      dns/test.example.com.json
  2. 1 0
      serve_test.go
  3. 3 2
      zones.go

+ 2 - 1
dns/test.example.com.json

@@ -61,7 +61,8 @@
       "alias": "www"
       "alias": "www"
     },
     },
     "www": {
     "www": {
-      "cname": "geo.bitnames.com."
+      "cname": "geo.bitnames.com.",
+      "ttl": 1800
     },
     },
     "www.europe": {
     "www.europe": {
       "cname": "geo-europe.bitnames.com."
       "cname": "geo-europe.bitnames.com."

+ 1 - 0
serve_test.go

@@ -77,6 +77,7 @@ func (s *ServeSuite) TestServing(c *C) {
 	// CNAMEs
 	// CNAMEs
 	r = exchange(c, "www.test.example.com.", dns.TypeA)
 	r = exchange(c, "www.test.example.com.", dns.TypeA)
 	c.Check(r.Answer[0].(*dns.CNAME).Target, Equals, "geo.bitnames.com.")
 	c.Check(r.Answer[0].(*dns.CNAME).Target, Equals, "geo.bitnames.com.")
+	c.Check(int(r.Answer[0].Header().Ttl), Equals, 1800)
 
 
 	//SPF
 	//SPF
 	r = exchange(c, "test.example.com.", dns.TypeSPF)
 	r = exchange(c, "test.example.com.", dns.TypeSPF)

+ 3 - 2
zones.go

@@ -297,11 +297,12 @@ func setupZoneData(data map[string]interface{}, Zone *Zone) {
 				record := new(Record)
 				record := new(Record)
 
 
 				var h dns.RR_Header
 				var h dns.RR_Header
-				// log.Println("TTL OPTIONS", Zone.Options.Ttl)
-				h.Ttl = uint32(label.Ttl)
 				h.Class = dns.ClassINET
 				h.Class = dns.ClassINET
 				h.Rrtype = dnsType
 				h.Rrtype = dnsType
 
 
+				// We add the TTL as a last pass because we might not have
+				// processed it yet when we process the record data.
+
 				switch len(label.Label) {
 				switch len(label.Label) {
 				case 0:
 				case 0:
 					h.Name = Zone.Origin + "."
 					h.Name = Zone.Origin + "."