func (srv *Server) ServeUDP(l *net.UDPConn) os.Error { defer l.Close() handler := srv.Handler if handler == nil { handler = DefaultServeMux } for { m := make([]byte, DefaultMsgSize) n, a, e := l.ReadFromUDP(m) if e != nil { return e } m = m[:n] if srv.ReadTimeout != 0 { l.SetReadTimeout(srv.ReadTimeout) } if srv.WriteTimeout != 0 { l.SetWriteTimeout(srv.WriteTimeout) } d, err := newConn(nil, l, a, m, handler) if err != nil { continue } go d.serve() } panic("not reached") }