forked from quic-go/quic-go
trace when a packet is dropped because the receivedPackets chan is full
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user