mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-01-07 16:09:10 +08:00
42ef9f4b9e
* moving a bunch of packages under pkg * fix gen * fix tst * oops * fix test fo real * parse mx/a
28 lines
740 B
Go
28 lines
740 B
Go
package dnsresolver
|
|
|
|
// dnsCache implements a very simple DNS cache.
|
|
// It caches the entire answer (i.e. all TXT records), filtering
|
|
// out the non-SPF answers is done at a higher layer.
|
|
// At this time the only rtype is "TXT". Eventually we'll need
|
|
// to cache A/AAAA/CNAME records to to CNAME flattening.
|
|
type dnsCache map[string]map[string][]string // map[fqdn]map[rtype] -> answers
|
|
|
|
func (c dnsCache) get(label, rtype string) ([]string, bool) {
|
|
v1, ok := c[label]
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
v2, ok := v1[rtype]
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
return v2, true
|
|
}
|
|
|
|
func (c dnsCache) put(label, rtype string, answers []string) {
|
|
_, ok := c[label]
|
|
if !ok {
|
|
c[label] = make(map[string][]string)
|
|
}
|
|
c[label][rtype] = answers
|
|
}
|