forked from quic-go/quic-go
Don't retransmit handshake packets once the handshake is complete
Fixes #663.
This commit is contained in:
@@ -579,6 +579,10 @@ func (s *session) sendPacket() error {
|
||||
utils.Debugf("\tDequeueing retransmission for packet 0x%x", retransmitPacket.PacketNumber)
|
||||
|
||||
if retransmitPacket.EncryptionLevel != protocol.EncryptionForwardSecure {
|
||||
if s.handshakeComplete {
|
||||
// Don't retransmit handshake packets when the handshake is complete
|
||||
continue
|
||||
}
|
||||
utils.Debugf("\tDequeueing handshake retransmission for packet 0x%x", retransmitPacket.PacketNumber)
|
||||
stopWaitingFrame := s.sentPacketHandler.GetStopWaitingFrame(true)
|
||||
var packet *packedPacket
|
||||
|
||||
@@ -991,6 +991,18 @@ var _ = Describe("Session", func() {
|
||||
Expect(sentPackets[0].Frames).To(HaveLen(2))
|
||||
Expect(sentPackets[0].Frames).To(ContainElement(sf))
|
||||
})
|
||||
|
||||
It("doesn't retransmit handshake packets when the handshake is complete", func() {
|
||||
sess.handshakeComplete = true
|
||||
sf := &frames.StreamFrame{StreamID: 1, Data: []byte("foobar")}
|
||||
sph.retransmissionQueue = []*ackhandler.Packet{{
|
||||
Frames: []frames.Frame{sf},
|
||||
EncryptionLevel: protocol.EncryptionSecure,
|
||||
}}
|
||||
err := sess.sendPacket()
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(mconn.written).To(BeEmpty())
|
||||
})
|
||||
})
|
||||
|
||||
Context("for packets after the handshake", func() {
|
||||
|
||||
Reference in New Issue
Block a user