Chore: return empty record in SVCB/HTTPSSVC on fake-ip mode

This commit is contained in:
Dreamacro
2020-10-13 00:15:49 +08:00
parent d3b14c325f
commit bc52f8e4fd
4 changed files with 40 additions and 39 deletions

View File

@ -107,16 +107,12 @@ func withFakeIP(fakePool *fakeip.Pool) middleware {
return next(r)
}
if q.Qtype == D.TypeAAAA {
msg := &D.Msg{}
msg.Answer = []D.RR{}
switch q.Qtype {
case D.TypeAAAA, D.TypeSVCB, D.TypeHTTPS:
return handleMsgWithEmptyAnswer(r), nil
}
msg.SetRcode(r, D.RcodeSuccess)
msg.Authoritative = true
msg.RecursionAvailable = true
return msg, nil
} else if q.Qtype != D.TypeA {
if q.Qtype != D.TypeA {
return next(r)
}
@ -143,14 +139,7 @@ func withResolver(resolver *Resolver) handler {
// return a empty AAAA msg when ipv6 disabled
if !resolver.ipv6 && q.Qtype == D.TypeAAAA {
msg := &D.Msg{}
msg.Answer = []D.RR{}
msg.SetRcode(r, D.RcodeSuccess)
msg.Authoritative = true
msg.RecursionAvailable = true
return msg, nil
return handleMsgWithEmptyAnswer(r), nil
}
msg, err := resolver.Exchange(r)

View File

@ -142,3 +142,14 @@ func transform(servers []NameServer, resolver *Resolver) []dnsClient {
}
return ret
}
func handleMsgWithEmptyAnswer(r *D.Msg) *D.Msg {
msg := &D.Msg{}
msg.Answer = []D.RR{}
msg.SetRcode(r, D.RcodeSuccess)
msg.Authoritative = true
msg.RecursionAvailable = true
return msg
}