limit number of tracked packets in ReceivedPacketHandler

fixes #132
This commit is contained in:
Marten Seemann
2016-06-11 13:51:05 +07:00
parent 459080a6dc
commit c095261749
3 changed files with 23 additions and 1 deletions

View File

@@ -6,12 +6,16 @@ import (
"github.com/lucas-clemente/quic-go/frames"
"github.com/lucas-clemente/quic-go/protocol"
"github.com/lucas-clemente/quic-go/qerr"
)
// ErrDuplicatePacket occurres when a duplicate packet is received
var ErrDuplicatePacket = errors.New("ReceivedPacketHandler: Duplicate Packet")
var errInvalidPacketNumber = errors.New("ReceivedPacketHandler: Invalid packet number")
var (
errInvalidPacketNumber = errors.New("ReceivedPacketHandler: Invalid packet number")
errTooManyOutstandingReceivedPackets = qerr.Error(qerr.TooManyOutstandingReceivedPackets, "")
)
type packetHistoryEntry struct {
EntropyBit bool
@@ -64,6 +68,10 @@ func (h *receivedPacketHandler) ReceivedPacket(packetNumber protocol.PacketNumbe
h.garbageCollect()
if uint32(len(h.packetHistory)) > protocol.MaxTrackedReceivedPackets {
return errTooManyOutstandingReceivedPackets
}
return nil
}