Dont answer responses even in test code

This commit is contained in:
Miek Gieben 2011-01-18 19:54:58 +01:00
parent 0d36c44a8e
commit 04f2bf449a
3 changed files with 25 additions and 1 deletions

View File

@ -32,6 +32,9 @@ func (s *server) ResponderUDP(c *net.UDPConn, a net.Addr, in []byte) {
// NXdomain 'n stuff
println("Unpacking failed")
}
if inmsg.Hdr.Response == true {
return // Don't answer responses
}
m := new(dns.Msg)
m.MsgHdr.Id = inmsg.MsgHdr.Id
m.MsgHdr.Authoritative = true
@ -63,7 +66,15 @@ func (s *server) ResponderUDP(c *net.UDPConn, a net.Addr, in []byte) {
}
func (s *server) ResponderTCP(c *net.TCPConn, in []byte) {
return
inmsg := new(dns.Msg)
if !inmsg.Unpack(in) {
// NXdomain 'n stuff
println("Unpacking failed")
}
if inmsg.Hdr.Response == true {
return // Don't answer responses
}
return // we are lazy and don't support tcp
}
func main() {

View File

@ -25,6 +25,9 @@ func (s *server) ResponderUDP(c *net.UDPConn, a net.Addr, in []byte) {
// NXdomain 'n stuff
println("Unpacking failed")
}
if inmsg.MsgHdr.Response == true {
return // don't answer responses
}
m := new(dns.Msg)
m.MsgHdr.Id = inmsg.MsgHdr.Id
m.MsgHdr.Response = true

View File

@ -36,6 +36,11 @@ func createpkg(id uint16, tcp bool, remove net.Addr) []byte {
func (s *myserv) ResponderUDP(c *net.UDPConn, a net.Addr, in []byte) {
inmsg := new(dns.Msg)
inmsg.Unpack(in)
if inmsg.MsgHdr.Response == true {
// Uh... answering to an response??
// dont think so
return
}
out := createpkg(inmsg.MsgHdr.Id, false, a)
SendUDP(out, c, a)
// Meta.QLen/RLen/QueryStart/QueryEnd can be filled in at
@ -45,6 +50,11 @@ func (s *myserv) ResponderUDP(c *net.UDPConn, a net.Addr, in []byte) {
func (s *myserv) ResponderTCP(c *net.TCPConn, in []byte) {
inmsg := new(dns.Msg)
inmsg.Unpack(in)
if inmsg.MsgHdr.Response == true {
// Uh... answering to an response??
// dont think so
return
}
out := createpkg(inmsg.MsgHdr.Id, true, c.RemoteAddr())
SendTCP(out, c)
}