diff --git a/TODO b/TODO index b478d984..0cc2d3e9 100644 --- a/TODO +++ b/TODO @@ -7,6 +7,7 @@ Todo: * NSEC and nsec3 closest encloser helper functions * Tsig generation for replies (request MAC) * pack/Unpack smaller. EDNS 'n stuff can be folded in +* server: don't need the interfaces only functions Longer term: * Parsing from strings, going with goyacc and own lexer diff --git a/server.go b/server.go index 63cf4d00..4810dbef 100644 --- a/server.go +++ b/server.go @@ -39,12 +39,12 @@ type Handler interface { // an UDP response. An UDP connection needs a remote // address to write to. ServeUDP() must take care of sending // any response back to the requestor. - ServeUDP(c *net.UDPConn, a net.Addr, in []byte) + ReplyUDP(c *net.UDPConn, a net.Addr, in []byte) // Receives the raw message content and writes back // a TCP response. A TCP connection does need to // know explicitly be told the remote address. ServeTCP() must // take care of sending back a response to the requestor. - ServeTCP(c *net.TCPConn, in []byte) + ReplyTCP(c *net.TCPConn, in []byte) } func ServeUDP(l *net.UDPConn, handler Handler) os.Error { @@ -58,7 +58,7 @@ func ServeUDP(l *net.UDPConn, handler Handler) os.Error { return err } m = m[:n] - go handler.ServeUDP(l, radd, m) + go handler.ReplyUDP(l, radd, m) } panic("not reached") } @@ -96,7 +96,7 @@ func ServeTCP(l *net.TCPListener, handler Handler) os.Error { } i += n } - go handler.ServeTCP(c, m) + go handler.ReplyTCP(c, m) } panic("not reached") } diff --git a/server_test.go b/server_test.go index e9c051f0..a0af6bab 100644 --- a/server_test.go +++ b/server_test.go @@ -6,7 +6,7 @@ import ( "time" ) -type server Server +type server int func createpkg(id uint16, tcp bool, remove net.Addr) []byte { m := new(Msg) @@ -32,7 +32,7 @@ func createpkg(id uint16, tcp bool, remove net.Addr) []byte { return out } -func (h *server) ServeUDP(c *net.UDPConn, a net.Addr, in []byte) { +func (h *server) ReplyUDP(c *net.UDPConn, a net.Addr, in []byte) { inmsg := new(Msg) inmsg.Unpack(in) if inmsg.MsgHdr.Response == true { @@ -44,7 +44,7 @@ func (h *server) ServeUDP(c *net.UDPConn, a net.Addr, in []byte) { SendUDP(out, c, a) } -func (h *server) ServeTCP(c *net.TCPConn, in []byte) { +func (h *server) ReplyTCP(c *net.TCPConn, in []byte) { inmsg := new(Msg) inmsg.Unpack(in) if inmsg.MsgHdr.Response == true { @@ -55,10 +55,10 @@ func (h *server) ServeTCP(c *net.TCPConn, in []byte) { } func TestResponder(t *testing.T) { - var h server - go ListenAndServeTCP("127.0.0.1:8053", h.(Handler)) - go ListenAndServeUDP("127.0.0.1:8053", h.(Handler)) - time.Sleep(1 * 1e9) + var h *server + go ListenAndServeTCP("127.0.0.1:8053", h) + go ListenAndServeUDP("127.0.0.1:8053", h) + time.Sleep(20 * 1e9) } /*