trace when a packet is dropped because the receivedPackets chan is full

This commit is contained in:
Marten Seemann
2020-12-15 15:20:13 +07:00
parent 486738981f
commit 7c2e938684
2 changed files with 12 additions and 5 deletions

View File

@@ -1117,6 +1117,9 @@ func (s *session) handlePacket(p *receivedPacket) {
select {
case s.receivedPackets <- p:
default:
if s.tracer != nil {
s.tracer.DroppedPacket(logging.PacketTypeNotDetermined, p.Size(), logging.PacketDropDOSPrevention)
}
}
}

View File

@@ -2092,13 +2092,17 @@ var _ = Describe("Session", func() {
})
})
It("stores up to MaxSessionUnprocessedPackets packets", func(done Done) {
It("stores up to MaxSessionUnprocessedPackets packets", func() {
done := make(chan struct{})
tracer.EXPECT().DroppedPacket(logging.PacketTypeNotDetermined, logging.ByteCount(6), logging.PacketDropDOSPrevention).Do(func(logging.PacketType, logging.ByteCount, logging.PacketDropReason) {
close(done)
})
// Nothing here should block
for i := protocol.PacketNumber(0); i < protocol.MaxSessionUnprocessedPackets+10; i++ {
sess.handlePacket(&receivedPacket{})
for i := protocol.PacketNumber(0); i < protocol.MaxSessionUnprocessedPackets+1; i++ {
sess.handlePacket(&receivedPacket{data: []byte("foobar")})
}
close(done)
}, 0.5)
Eventually(done).Should(BeClosed())
})
Context("getting streams", func() {
It("opens streams", func() {