Some more memory tweaks

This commit is contained in:
Miek Gieben 2012-01-12 22:34:53 +01:00
parent 19e7d87bd9
commit 3078f05f56
2 changed files with 5 additions and 2 deletions

View File

@ -238,6 +238,7 @@ func (c *Client) Exchange(m *Msg, a string) (r *Msg, err error) {
case "udp": case "udp":
in = make([]byte, DefaultMsgSize) in = make([]byte, DefaultMsgSize)
} }
//TODO(mg): look at the buffer size here
if n, err = c.ExchangeBuffer(out, a, in); err != nil { if n, err = c.ExchangeBuffer(out, a, in); err != nil {
return nil, err return nil, err
} }

View File

@ -82,7 +82,8 @@ func RefusedHandler() Handler { return HandlerFunc(Refused) }
// ... // ...
func ListenAndServe(addr string, network string, handler Handler) error { func ListenAndServe(addr string, network string, handler Handler) error {
server := &Server{Addr: addr, Net: network, Handler: handler} //TODO(mg): make message size configurable....
server := &Server{Addr: addr, Net: network, Handler: handler, UDPSize: DefaultMsgSize}
return server.ListenAndServe() return server.ListenAndServe()
} }
@ -141,6 +142,7 @@ type Server struct {
Addr string // address to listen on, ":dns" if empty Addr string // address to listen on, ":dns" if empty
Net string // if "tcp" it will invoke a TCP listener, otherwise an UDP one Net string // if "tcp" it will invoke a TCP listener, otherwise an UDP one
Handler Handler // handler to invoke, dns.DefaultServeMux if nil Handler Handler // handler to invoke, dns.DefaultServeMux if nil
UDPSize int // default buffer to use to read incoming UDP messages
ReadTimeout int64 // the net.Conn.SetReadTimeout value for new connections ReadTimeout int64 // the net.Conn.SetReadTimeout value for new connections
WriteTimeout int64 // the net.Conn.SetWriteTimeout value for new connections WriteTimeout int64 // the net.Conn.SetWriteTimeout value for new connections
TsigSecret map[string]string // secret(s) for Tsig map[<zonename>]<base64 secret> TsigSecret map[string]string // secret(s) for Tsig map[<zonename>]<base64 secret>
@ -234,7 +236,7 @@ func (srv *Server) ServeUDP(l *net.UDPConn) error {
handler = DefaultServeMux handler = DefaultServeMux
} }
for { for {
m := make([]byte, DefaultMsgSize) m := make([]byte, srv.UDPSize)
n, a, e := l.ReadFromUDP(m) n, a, e := l.ReadFromUDP(m)
if e != nil { if e != nil {
return e return e