fix parsing of the PublicHeader of public reset packets

ref #34
This commit is contained in:
Marten Seemann
2017-01-07 14:49:39 +07:00
parent 6c1e24964a
commit f71e54534a
2 changed files with 24 additions and 12 deletions

View File

@@ -138,23 +138,25 @@ func ParsePublicHeader(b io.ByteReader) (*PublicHeader, error) {
return nil, errInvalidConnectionID
}
// Version (optional)
if header.VersionFlag {
var versionTag uint32
versionTag, err = utils.ReadUint32(b)
if !header.ResetFlag {
// Version (optional)
if header.VersionFlag {
var versionTag uint32
versionTag, err = utils.ReadUint32(b)
if err != nil {
return nil, err
}
header.VersionNumber = protocol.VersionTagToNumber(versionTag)
}
// Packet number
packetNumber, err := utils.ReadUintN(b, uint8(header.PacketNumberLen))
if err != nil {
return nil, err
}
header.VersionNumber = protocol.VersionTagToNumber(versionTag)
header.PacketNumber = protocol.PacketNumber(packetNumber)
}
// Packet number
packetNumber, err := utils.ReadUintN(b, uint8(header.PacketNumberLen))
if err != nil {
return nil, err
}
header.PacketNumber = protocol.PacketNumber(packetNumber)
return header, nil
}