Chore: split enhanced mode instance (#936)

Co-authored-by: Dreamacro <305009791@qq.com>
This commit is contained in:
Kr328
2020-09-17 10:48:42 +08:00
committed by GitHub
parent e773f95f21
commit 558ac6b965
8 changed files with 228 additions and 113 deletions

View File

@ -27,16 +27,22 @@ func (s *Server) ServeDNS(w D.ResponseWriter, r *D.Msg) {
return
}
s.handler(w, r)
msg, err := s.handler(r)
if err != nil {
D.HandleFailed(w, r)
return
}
w.WriteMsg(msg)
}
func (s *Server) setHandler(handler handler) {
s.handler = handler
}
func ReCreateServer(addr string, resolver *Resolver) error {
func ReCreateServer(addr string, resolver *Resolver, mapper *ResolverEnhancer) error {
if addr == address && resolver != nil {
handler := newHandler(resolver)
handler := newHandler(resolver, mapper)
server.setHandler(handler)
return nil
}
@ -68,7 +74,7 @@ func ReCreateServer(addr string, resolver *Resolver) error {
}
address = addr
handler := newHandler(resolver)
handler := newHandler(resolver, mapper)
server = &Server{handler: handler}
server.Server = &D.Server{Addr: addr, PacketConn: p, Handler: server}