Make the udp msg size configurable
This commit is contained in:
parent
3078f05f56
commit
189de95957
1
dns.go
1
dns.go
|
@ -69,6 +69,7 @@ import (
|
|||
const (
|
||||
Year68 = 2 << (32 - 1) // For RFC1982 (Serial Arithmetic) calculations in 32 bits.
|
||||
DefaultMsgSize = 4096 // A standard default for larger than 512 packets.
|
||||
UDPMsgSize = 1024 // A nice default for servers receiving UDP packets.
|
||||
MaxMsgSize = 65536 // Largest possible DNS packet.
|
||||
DefaultTtl = 3600 // Default TTL.
|
||||
)
|
||||
|
|
12
server.go
12
server.go
|
@ -81,9 +81,8 @@ func Refused(w ResponseWriter, r *Msg) {
|
|||
func RefusedHandler() Handler { return HandlerFunc(Refused) }
|
||||
|
||||
// ...
|
||||
func ListenAndServe(addr string, network string, handler Handler) error {
|
||||
//TODO(mg): make message size configurable....
|
||||
server := &Server{Addr: addr, Net: network, Handler: handler, UDPSize: DefaultMsgSize}
|
||||
func ListenAndServe(addr string, network string, handler Handler, size int) error {
|
||||
server := &Server{Addr: addr, Net: network, Handler: handler, UDPSize: size}
|
||||
return server.ListenAndServe()
|
||||
}
|
||||
|
||||
|
@ -142,13 +141,13 @@ type Server struct {
|
|||
Addr string // address to listen on, ":dns" if empty
|
||||
Net string // if "tcp" it will invoke a TCP listener, otherwise an UDP one
|
||||
Handler Handler // handler to invoke, dns.DefaultServeMux if nil
|
||||
UDPSize int // default buffer to use to read incoming UDP messages
|
||||
UDPSize int // default buffer to use to read incoming UDP messages
|
||||
ReadTimeout int64 // the net.Conn.SetReadTimeout 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>
|
||||
}
|
||||
|
||||
// ...
|
||||
// ListenAndServe starts a nameserver on the configured address.
|
||||
func (srv *Server) ListenAndServe() error {
|
||||
addr := srv.Addr
|
||||
if addr == "" {
|
||||
|
@ -235,6 +234,9 @@ func (srv *Server) ServeUDP(l *net.UDPConn) error {
|
|||
if handler == nil {
|
||||
handler = DefaultServeMux
|
||||
}
|
||||
if srv.UDPSize == 0 {
|
||||
srv.UDPSize = UDPMsgSize
|
||||
}
|
||||
for {
|
||||
m := make([]byte, srv.UDPSize)
|
||||
n, a, e := l.ReadFromUDP(m)
|
||||
|
|
|
@ -18,7 +18,7 @@ func HelloServer(w ResponseWriter, req *Msg) {
|
|||
func TestServing(t *testing.T) {
|
||||
HandleFunc("miek.nl.", HelloServer)
|
||||
go func() {
|
||||
err := ListenAndServe(":8053", "udp", nil)
|
||||
err := ListenAndServe(":8053", "udp", nil, 0)
|
||||
if err != nil {
|
||||
t.Log("ListenAndServe: ", err.Error())
|
||||
t.Fail()
|
||||
|
@ -32,7 +32,7 @@ func BenchmarkServing(b *testing.B) {
|
|||
// Again start a server
|
||||
HandleFunc("miek.nl.", HelloServer)
|
||||
go func() {
|
||||
ListenAndServe("127.0.0.1:8053", "udp", nil)
|
||||
ListenAndServe("127.0.0.1:8053", "udp", nil, 0)
|
||||
}()
|
||||
|
||||
c := NewClient()
|
||||
|
|
Loading…
Reference in New Issue