dns

DNS client and server implementations using the Go project's dnsmessage package
Log | Files | Refs | README | LICENSE

commit 0be319b95e9008dcc63694c16025f23e90e74300
parent 3a23ded8a9048c791d17b7cc06e978412c4c4973
Author: Oliver Lowe <o@olowe.co>
Date:   Tue, 14 Dec 2021 14:32:17 +1100

cmd/recursor: cache empty answers too

Diffstat:
Mcmd/recursor/recursor.go | 9++++-----
1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/cmd/recursor/recursor.go b/cmd/recursor/recursor.go @@ -145,18 +145,17 @@ func handler(w dns.ResponseWriter, qmsg *dnsmessage.Message) { } rmsg.Header.RCode = resolved.Header.RCode rmsg.Answers = resolved.Answers + cache.Lock() + cache.m[q] = rmsg.Answers + fmt.Fprintf(os.Stderr, "cached %s %s\n", q.Name, q.Type) + cache.Unlock() if len(rmsg.Answers) == 0 { rmsg.Authorities = resolved.Authorities w.WriteMsg(rmsg) - fmt.Fprintf(os.Stderr, "finished %s %s\n", q.Name, q.Type) return } rmsg.Answers = resolved.Answers w.WriteMsg(rmsg) - cache.Lock() - cache.m[q] = rmsg.Answers - fmt.Fprintf(os.Stderr, "added %s %s to cache\n", q.Name, q.Type) - cache.Unlock() } var cache = struct{