First set the timeouts, then use the socket

This commit is contained in:
Miek Gieben 2012-09-01 09:28:19 +02:00
parent 9d002abc8c
commit 12c7bc1021
1 changed files with 6 additions and 6 deletions

View File

@ -278,6 +278,12 @@ func (srv *Server) serveUDP(l *net.UDPConn) error {
srv.UDPSize = udpMsgSize
}
for {
if srv.ReadTimeout != 0 {
l.SetReadDeadline(time.Now().Add(srv.ReadTimeout))
}
if srv.WriteTimeout != 0 {
l.SetWriteDeadline(time.Now().Add(srv.WriteTimeout))
}
m := make([]byte, srv.UDPSize)
n, a, e := l.ReadFromUDP(m)
if e != nil || n == 0 {
@ -286,12 +292,6 @@ func (srv *Server) serveUDP(l *net.UDPConn) error {
}
m = m[:n]
if srv.ReadTimeout != 0 {
l.SetReadDeadline(time.Now().Add(srv.ReadTimeout))
}
if srv.WriteTimeout != 0 {
l.SetWriteDeadline(time.Now().Add(srv.WriteTimeout))
}
d, err := newConn(nil, l, a, m, handler, srv.TsigSecret)
if err != nil {
continue