Change: ipv6 logic

This commit is contained in:
Dreamacro
2020-06-18 18:11:02 +08:00
parent 99b34e8d8b
commit 60bad66bc3
6 changed files with 104 additions and 53 deletions

View File

@ -58,9 +58,23 @@ func withFakeIP(fakePool *fakeip.Pool) middleware {
func withResolver(resolver *Resolver) handler {
return func(w D.ResponseWriter, r *D.Msg) {
q := r.Question[0]
// 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
w.WriteMsg(msg)
return
}
msg, err := resolver.Exchange(r)
if err != nil {
q := r.Question[0]
log.Debugln("[DNS Server] Exchange %s failed: %v", q.String(), err)
D.HandleFailed(w, r)
return

View File

@ -43,6 +43,7 @@ func ReCreateServer(addr string, resolver *Resolver) error {
if server.Server != nil {
server.Shutdown()
server = &Server{}
address = ""
}