You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gdns/server_udp.go

32 lines
672 B
Go

package main
import (
"net"
"github.com/fangdingjun/go-log"
"github.com/miekg/dns"
)
func (srv *server) handleUDP(buf []byte, addr net.Addr, conn *net.UDPConn) {
msg := new(dns.Msg)
if err := msg.Unpack(buf); err != nil {
log.Debugln("udp parse msg", err)
return
}
for _, up := range srv.upstreams {
6 years ago
log.Debugf("from %s query upstream %s", addr, up.String())
log.Debugln("query", msg.Question[0].String())
m, err := queryUpstream(msg, up)
if err == nil {
6 years ago
for _, a := range m.Answer {
log.Debugln("result", a.String())
}
d, _ := m.Pack()
conn.WriteTo(d, addr)
break
} else {
log.Debugln("udp query upstream err", err)
}
}
}