Merge from remote branch

This commit is contained in:
yaling888
2022-02-23 01:00:27 +08:00
79 changed files with 1071 additions and 542 deletions

View File

@ -47,11 +47,11 @@ func (s *Server) SetHandler(handler handler) {
s.handler = handler
}
func ReCreateServer(addr string, resolver *Resolver, mapper *ResolverEnhancer) error {
func ReCreateServer(addr string, resolver *Resolver, mapper *ResolverEnhancer) {
if addr == address && resolver != nil {
handler := NewHandler(resolver, mapper)
server.SetHandler(handler)
return nil
return
}
if server.Server != nil {
@ -60,24 +60,37 @@ func ReCreateServer(addr string, resolver *Resolver, mapper *ResolverEnhancer) e
address = ""
}
if addr == "" {
return
}
var err error
defer func() {
if err != nil {
log.Errorln("Start DNS server error: %s", err.Error())
}
}()
_, port, err := net.SplitHostPort(addr)
if port == "0" || port == "" || err != nil {
return nil
return
}
udpAddr, err := net.ResolveUDPAddr("udp", addr)
if err != nil {
return err
return
}
p, err := net.ListenUDP("udp", udpAddr)
if err != nil {
return err
return
}
err = sockopt.UDPReuseaddr(p)
if err != nil {
log.Warnln("Failed to Reuse UDP Address: %s", err)
err = nil
}
address = addr
@ -88,5 +101,6 @@ func ReCreateServer(addr string, resolver *Resolver, mapper *ResolverEnhancer) e
go func() {
server.ActivateAndServe()
}()
return nil
log.Infoln("DNS server listening at: %s", p.LocalAddr().String())
}