From d5fa430ba3a7aceb30f00322cd9702666fa633ef Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sat, 23 Mar 2019 14:46:56 +0100 Subject: [PATCH] don't cancel retransmissions for Initial packets --- session.go | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/session.go b/session.go index 68eb8fabc..b58d53c8a 100644 --- a/session.go +++ b/session.go @@ -1077,21 +1077,9 @@ func (s *session) maybeSendAckOnlyPacket() error { // maybeSendRetransmission sends retransmissions for at most one packet. // It takes care that Initials aren't retransmitted, if a packet from the server was already received. func (s *session) maybeSendRetransmission() (bool, error) { - var retransmitPacket *ackhandler.Packet - for { - retransmitPacket = s.sentPacketHandler.DequeuePacketForRetransmission() - if retransmitPacket == nil { - return false, nil - } - - // Don't retransmit Initial packets if we already received a response. - // An Initial might have been retransmitted multiple times before we receive a response. - // As soon as we receive one response, we don't need to send any more Initials. - if s.perspective == protocol.PerspectiveClient && s.receivedFirstPacket && retransmitPacket.PacketType == protocol.PacketTypeInitial { - s.logger.Debugf("Skipping retransmission of packet %d. Already received a response to an Initial.", retransmitPacket.PacketNumber) - continue - } - break + retransmitPacket := s.sentPacketHandler.DequeuePacketForRetransmission() + if retransmitPacket == nil { + return false, nil } s.logger.Debugf("Dequeueing retransmission for packet 0x%x (%s)", retransmitPacket.PacketNumber, retransmitPacket.EncryptionLevel)