Skip to content

Commit d0f3312

Browse files
authored
fix: incorrect OPT RR filter order (#2634)
1 parent 4f93c93 commit d0f3312

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

dns/util.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ func putMsgToCache(c dnsCache, q D.Question, msg *D.Msg) {
6464
return
6565
}
6666

67+
msg = msg.Copy() // never modify the original msg
68+
69+
// OPT RRs MUST NOT be cached, forwarded, or stored in or loaded from master files.
70+
msg.Extra = lo.Filter(msg.Extra, func(rr D.RR, index int) bool {
71+
return rr.Header().Rrtype != D.TypeOPT
72+
})
73+
6774
var ttl uint32
6875
if msg.Rcode == D.RcodeServerFailure {
6976
// [...] a resolver MAY cache a server failure response.
@@ -76,13 +83,6 @@ func putMsgToCache(c dnsCache, q D.Question, msg *D.Msg) {
7683
return
7784
}
7885

79-
msg = msg.Copy() // never modify the original msg
80-
81-
// OPT RRs MUST NOT be cached, forwarded, or stored in or loaded from master files.
82-
msg.Extra = lo.Filter(msg.Extra, func(rr D.RR, index int) bool {
83-
return rr.Header().Rrtype != D.TypeOPT
84-
})
85-
8686
c.SetWithExpire(q.String(), msg, time.Now().Add(time.Duration(ttl)*time.Second))
8787
}
8888

0 commit comments

Comments
 (0)