diff --git a/lib/gat/pool/pool.go b/lib/gat/pool/pool.go index d55012aea01987356d88dd5394edacd894de336d..1995ee71bd7b1b4b4d5d81577271defb1fc5b660 100644 --- a/lib/gat/pool/pool.go +++ b/lib/gat/pool/pool.go @@ -338,7 +338,9 @@ func (T *Pool) serve(client *pooledClient, initialized bool) error { packet, _ := ppool.Get() defer func() { - ppool.Put(packet) + if len(packet) <= maxPacketBufferSize { + ppool.Put(packet) + } }() if !initialized { @@ -370,6 +372,10 @@ func (T *Pool) serve(client *pooledClient, initialized bool) error { server = nil } + if len(packet) > maxPacketBufferSize { + packet = make(fed.Packet, 0, maxPacketBufferSize) + } + packet, err = client.GetConn().ReadPacket(true, packet) if err != nil { return err @@ -387,10 +393,6 @@ func (T *Pool) serve(client *pooledClient, initialized bool) error { packet, err, serverErr = bouncers.Bounce(client.GetConn(), server.GetConn(), packet) } - if len(packet) > maxPacketBufferSize { - packet = make(fed.Packet, 0, maxPacketBufferSize) - } - if serverErr != nil { return serverErr } else {