Darien Raymond 7 лет назад
Родитель
Сommit
cb378a9dbf
1 измененных файлов с 8 добавлено и 1 удалено
  1. 8 1
      transport/internet/udp/hub.go

+ 8 - 1
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
 		}
 
 	}