1
0
Fork 0

Set correct TTL

pull/4/head
Ambrose Chua 2017-12-24 04:17:57 +08:00
parent 6efd8958b6
commit 0e4026ad14
Signed by: ambrose
GPG Key ID: B34FBE029276BA5D
1 changed files with 12 additions and 0 deletions

View File

@ -69,22 +69,34 @@ func (r *ResponseWriter) WriteMsg(res *dns.Msg) error {
// modify response.
res.MsgHdr.Rcode = dns.RcodeSuccess
nsTtl := uint32(600)
for i := 0; i < len(res.Ns); i++ {
if res.Ns[i].Header().Rrtype == dns.TypeSOA {
nsTtl = res.Ns[i].Header().Ttl
}
}
res.Answer = res2.Answer
for i := 0; i < len(res.Answer); i++ {
ans := res.Answer[i]
hdr := ans.Header()
if hdr.Rrtype == dns.TypeA {
aaaa, _ := To6(r.Prefix, ans.(*dns.A).A)
ttl := nsTtl
if ans.Header().Ttl < ttl {
ttl = ans.Header().Ttl
}
res.Answer[i] = &dns.AAAA{
Hdr: dns.RR_Header{
Name: hdr.Name,
Rrtype: dns.TypeAAAA,
Class: hdr.Class,
Ttl: ttl,
},
AAAA: aaaa,
}
}
}
res.Ns = []dns.RR{}
return r.ResponseWriter.WriteMsg(res)
}