diff --git a/packet_unpacker.go b/packet_unpacker.go index ca0a8cdc..13c773c7 100644 --- a/packet_unpacker.go +++ b/packet_unpacker.go @@ -22,12 +22,14 @@ type packetUnpacker struct { } func (u *packetUnpacker) Unpack(publicHeaderBinary []byte, hdr *PublicHeader, data []byte) (*unpackedPacket, error) { - data, err := u.aead.Open(data[:0], data, hdr.PacketNumber, publicHeaderBinary) + buf := getPacketBuffer() + defer putPacketBuffer(buf) + decrypted, err := u.aead.Open(buf, data, hdr.PacketNumber, publicHeaderBinary) if err != nil { // Wrap err in quicError so that public reset is sent by session return nil, qerr.Error(qerr.DecryptionFailure, err.Error()) } - r := bytes.NewReader(data) + r := bytes.NewReader(decrypted) // read private flag byte, for QUIC Version < 34 var entropyBit bool