Minor cleanups of session.Send, no functional change

This commit is contained in:
Lucas Clemente
2017-06-20 12:15:04 +02:00
parent 1057c3af14
commit 4064c75d97

View File

@@ -594,7 +594,6 @@ func (s *session) sendPacket() error {
if retransmitPacket == nil { if retransmitPacket == nil {
break break
} }
utils.Debugf("\tDequeueing retransmission for packet 0x%x", retransmitPacket.PacketNumber)
if retransmitPacket.EncryptionLevel != protocol.EncryptionForwardSecure { if retransmitPacket.EncryptionLevel != protocol.EncryptionForwardSecure {
if s.handshakeComplete { if s.handshakeComplete {
@@ -603,29 +602,22 @@ func (s *session) sendPacket() error {
} }
utils.Debugf("\tDequeueing handshake retransmission for packet 0x%x", retransmitPacket.PacketNumber) utils.Debugf("\tDequeueing handshake retransmission for packet 0x%x", retransmitPacket.PacketNumber)
s.packer.QueueControlFrameForNextPacket(s.sentPacketHandler.GetStopWaitingFrame(true)) s.packer.QueueControlFrameForNextPacket(s.sentPacketHandler.GetStopWaitingFrame(true))
var packet *packedPacket
packet, err := s.packer.RetransmitNonForwardSecurePacket(retransmitPacket) packet, err := s.packer.RetransmitNonForwardSecurePacket(retransmitPacket)
if err != nil { if err != nil {
return err return err
} }
if packet == nil { if err = s.sendPackedPacket(packet); err != nil {
continue
}
err = s.sendPackedPacket(packet)
if err != nil {
return err return err
} }
continue
} else { } else {
utils.Debugf("\tDequeueing retransmission for packet 0x%x", retransmitPacket.PacketNumber)
// resend the frames that were in the packet // resend the frames that were in the packet
for _, frame := range retransmitPacket.GetFramesForRetransmission() { for _, frame := range retransmitPacket.GetFramesForRetransmission() {
switch frame.(type) { switch f := frame.(type) {
case *frames.StreamFrame: case *frames.StreamFrame:
s.streamFramer.AddFrameForRetransmission(frame.(*frames.StreamFrame)) s.streamFramer.AddFrameForRetransmission(f)
case *frames.WindowUpdateFrame: case *frames.WindowUpdateFrame:
// only retransmit WindowUpdates if the stream is not yet closed and the we haven't sent another WindowUpdate with a higher ByteOffset for the stream // only retransmit WindowUpdates if the stream is not yet closed and the we haven't sent another WindowUpdate with a higher ByteOffset for the stream
var currentOffset protocol.ByteCount
f := frame.(*frames.WindowUpdateFrame)
currentOffset, err := s.flowControlManager.GetReceiveWindow(f.StreamID) currentOffset, err := s.flowControlManager.GetReceiveWindow(f.StreamID)
if err == nil && f.ByteOffset >= currentOffset { if err == nil && f.ByteOffset >= currentOffset {
s.packer.QueueControlFrameForNextPacket(f) s.packer.QueueControlFrameForNextPacket(f)
@@ -649,22 +641,18 @@ func (s *session) sendPacket() error {
} }
} }
packet, err := s.packer.PackPacket(s.sentPacketHandler.GetLeastUnacked()) packet, err := s.packer.PackPacket(s.sentPacketHandler.GetLeastUnacked())
if err != nil { if err != nil || packet == nil {
return err return err
} }
if packet == nil { if err = s.sendPackedPacket(packet); err != nil {
return nil return err
} }
// send every window update twice // send every window update twice
for _, f := range windowUpdateFrames { for _, f := range windowUpdateFrames {
s.packer.QueueControlFrameForNextPacket(f) s.packer.QueueControlFrameForNextPacket(f)
} }
windowUpdateFrames = nil windowUpdateFrames = nil
err = s.sendPackedPacket(packet)
if err != nil {
return err
}
s.nextAckScheduledTime = time.Time{} s.nextAckScheduledTime = time.Time{}
} }
} }