improve errors in SentPacketHandler

This commit is contained in:
Marten Seemann
2016-05-16 18:44:11 +07:00
parent fb6d90b813
commit 712e682d21
2 changed files with 9 additions and 4 deletions

View File

@@ -17,6 +17,11 @@ var (
ErrMapAccess = errors.New("SentPacketHandler: Packet does not exist in PacketHistory")
)
var (
errDuplicatePacketNumber = errors.New("Packet number already exists in Packet History")
errWrongPacketNumberIncrement = errors.New("Packet number must be increased by exactly 1")
)
var (
errAckForUnsentPacket = errors.New("SentPacketHandler: Received ACK for an unsent package")
retransmissionThreshold = uint8(3)
@@ -90,10 +95,10 @@ func (h *sentPacketHandler) queuePacketForRetransmission(packet *Packet) {
func (h *sentPacketHandler) SentPacket(packet *Packet) error {
_, ok := h.packetHistory[packet.PacketNumber]
if ok {
return errors.New("Packet number already exists in Packet History")
return errDuplicatePacketNumber
}
if h.lastSentPacketNumber+1 != packet.PacketNumber {
return errors.New("Packet number must be increased by exactly 1")
return errWrongPacketNumberIncrement
}
packet.sendTime = time.Now()
if packet.Length == 0 {

View File

@@ -56,7 +56,7 @@ var _ = Describe("SentPacketHandler", func() {
err := handler.SentPacket(&packet1)
Expect(err).ToNot(HaveOccurred())
err = handler.SentPacket(&packet2)
Expect(err).To(HaveOccurred())
Expect(err).To(MatchError(errDuplicatePacketNumber))
Expect(handler.lastSentPacketNumber).To(Equal(protocol.PacketNumber(1)))
Expect(handler.packetHistory).To(HaveKey(protocol.PacketNumber(1)))
Expect(handler.BytesInFlight()).To(Equal(protocol.ByteCount(1)))
@@ -68,7 +68,7 @@ var _ = Describe("SentPacketHandler", func() {
err := handler.SentPacket(&packet1)
Expect(err).ToNot(HaveOccurred())
err = handler.SentPacket(&packet2)
Expect(err).To(HaveOccurred())
Expect(err).To(MatchError(errWrongPacketNumberIncrement))
Expect(handler.lastSentPacketNumber).To(Equal(protocol.PacketNumber(1)))
Expect(handler.packetHistory).To(HaveKey(protocol.PacketNumber(1)))
Expect(handler.packetHistory).ToNot(HaveKey(protocol.PacketNumber(2)))