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)
|
utils.Debugf("\tDequeueing retransmission for packet 0x%x", retransmitPacket.PacketNumber)
|
||||||
|
|
||||||
if retransmitPacket.EncryptionLevel != protocol.EncryptionForwardSecure {
|
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)
|
utils.Debugf("\tDequeueing handshake retransmission for packet 0x%x", retransmitPacket.PacketNumber)
|
||||||
stopWaitingFrame := s.sentPacketHandler.GetStopWaitingFrame(true)
|
stopWaitingFrame := s.sentPacketHandler.GetStopWaitingFrame(true)
|
||||||
var packet *packedPacket
|
var packet *packedPacket
|
||||||
|
|||||||
@@ -991,6 +991,18 @@ var _ = Describe("Session", func() {
|
|||||||
Expect(sentPackets[0].Frames).To(HaveLen(2))
|
Expect(sentPackets[0].Frames).To(HaveLen(2))
|
||||||
Expect(sentPackets[0].Frames).To(ContainElement(sf))
|
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() {
|
Context("for packets after the handshake", func() {
|
||||||
|
|||||||
Reference in New Issue
Block a user