forked from quic-go/quic-go
Merge pull request #1574 from lucas-clemente/one-packet-unpacker
combine packetUnpackerBase and packetUnpacker
This commit is contained in:
@@ -20,43 +20,18 @@ type quicAEAD interface {
|
|||||||
Open1RTT(dst, src []byte, pn protocol.PacketNumber, ad []byte) ([]byte, error)
|
Open1RTT(dst, src []byte, pn protocol.PacketNumber, ad []byte) ([]byte, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type packetUnpackerBase struct {
|
|
||||||
version protocol.VersionNumber
|
|
||||||
}
|
|
||||||
|
|
||||||
func (u *packetUnpackerBase) parseFrames(decrypted []byte, hdr *wire.Header) ([]wire.Frame, error) {
|
|
||||||
r := bytes.NewReader(decrypted)
|
|
||||||
if r.Len() == 0 {
|
|
||||||
return nil, qerr.MissingPayload
|
|
||||||
}
|
|
||||||
|
|
||||||
fs := make([]wire.Frame, 0, 2)
|
|
||||||
// Read all frames in the packet
|
|
||||||
for {
|
|
||||||
frame, err := wire.ParseNextFrame(r, hdr, u.version)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if frame == nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
fs = append(fs, frame)
|
|
||||||
}
|
|
||||||
return fs, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// The packetUnpacker unpacks QUIC packets.
|
// The packetUnpacker unpacks QUIC packets.
|
||||||
type packetUnpacker struct {
|
type packetUnpacker struct {
|
||||||
packetUnpackerBase
|
aead quicAEAD
|
||||||
aead quicAEAD
|
version protocol.VersionNumber
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ unpacker = &packetUnpacker{}
|
var _ unpacker = &packetUnpacker{}
|
||||||
|
|
||||||
func newPacketUnpacker(aead quicAEAD, version protocol.VersionNumber) unpacker {
|
func newPacketUnpacker(aead quicAEAD, version protocol.VersionNumber) unpacker {
|
||||||
return &packetUnpacker{
|
return &packetUnpacker{
|
||||||
packetUnpackerBase: packetUnpackerBase{version: version},
|
aead: aead,
|
||||||
aead: aead,
|
version: version,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,3 +72,24 @@ func (u *packetUnpacker) Unpack(headerBinary []byte, hdr *wire.Header, data []by
|
|||||||
frames: fs,
|
frames: fs,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *packetUnpacker) parseFrames(decrypted []byte, hdr *wire.Header) ([]wire.Frame, error) {
|
||||||
|
r := bytes.NewReader(decrypted)
|
||||||
|
if r.Len() == 0 {
|
||||||
|
return nil, qerr.MissingPayload
|
||||||
|
}
|
||||||
|
|
||||||
|
fs := make([]wire.Frame, 0, 2)
|
||||||
|
// Read all frames in the packet
|
||||||
|
for {
|
||||||
|
frame, err := wire.ParseNextFrame(r, hdr, u.version)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if frame == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
fs = append(fs, frame)
|
||||||
|
}
|
||||||
|
return fs, nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user