diff --git a/transport/internet/udp/hub.go b/transport/internet/udp/hub.go index b0e0676e..627e749e 100644 --- a/transport/internet/udp/hub.go +++ b/transport/internet/udp/hub.go @@ -95,7 +95,7 @@ func (h *Hub) start() { buffer := buf.New() var noob int var addr *net.UDPAddr - err := buffer.AppendSupplier(func(b []byte) (int, error) { + err := buffer.Reset(func(b []byte) (int, error) { n, nb, _, a, e := ReadUDPMsg(h.conn, b, oobBytes) noob = nb addr = a @@ -108,6 +108,11 @@ func (h *Hub) start() { break } + if buffer.IsEmpty() { + buffer.Release() + continue + } + payload := &Payload{ Content: buffer, Source: net.UDPDestination(net.IPAddress(addr.IP), net.Port(addr.Port)), @@ -124,6 +129,8 @@ func (h *Hub) start() { select { case c <- payload: default: + buffer.Release() + payload.Content = nil } }