From 1e78104f83c40d9cf019aeba29b5ec9b0e1daefd Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sat, 14 Jan 2017 15:22:53 +0700 Subject: [PATCH] trigger window updates before queueing frames for retransmission ref #394 --- session.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/session.go b/session.go index 0f911f81..f3e591e3 100644 --- a/session.go +++ b/session.go @@ -488,6 +488,16 @@ func (s *Session) sendPacket() error { var controlFrames []frames.Frame + // get WindowUpdate frames + // this call triggers the flow controller to increase the flow control windows, if necessary + windowUpdateFrames, err := s.getWindowUpdateFrames() + if err != nil { + return err + } + for _, wuf := range windowUpdateFrames { + controlFrames = append(controlFrames, wuf) + } + // check for retransmissions first for { retransmitPacket := s.sentPacketHandler.DequeuePacketForRetransmission() @@ -515,13 +525,6 @@ func (s *Session) sendPacket() error { } } - windowUpdateFrames, err := s.getWindowUpdateFrames() - if err != nil { - return err - } - for _, wuf := range windowUpdateFrames { - controlFrames = append(controlFrames, wuf) - } ack := s.receivedPacketHandler.GetAckFrame() if ack != nil { controlFrames = append(controlFrames, ack)