Merge pull request #1025 from lucas-clemente/fix-964

ignore STOP_WAITINGs, derive lower bound for packets to include in ACK
This commit is contained in:
Marten Seemann
2017-12-14 19:38:28 +07:00
committed by GitHub
11 changed files with 446 additions and 167 deletions

View File

@@ -523,8 +523,7 @@ func (s *session) handleFrames(fs []wire.Frame, encLevel protocol.EncryptionLeve
s.closeRemote(qerr.Error(frame.ErrorCode, frame.ReasonPhrase))
case *wire.GoawayFrame:
err = errors.New("unimplemented: handling GOAWAY frames")
case *wire.StopWaitingFrame:
s.receivedPacketHandler.IgnoreBelow(frame.LeastUnacked)
case *wire.StopWaitingFrame: // ignore STOP_WAITINGs
case *wire.RstStreamFrame:
err = s.handleRstStreamFrame(frame)
case *wire.MaxDataFrame:
@@ -616,7 +615,11 @@ func (s *session) handleRstStreamFrame(frame *wire.RstStreamFrame) error {
}
func (s *session) handleAckFrame(frame *wire.AckFrame, encLevel protocol.EncryptionLevel) error {
return s.sentPacketHandler.ReceivedAck(frame, s.lastRcvdPacketNumber, encLevel, s.lastNetworkActivityTime)
if err := s.sentPacketHandler.ReceivedAck(frame, s.lastRcvdPacketNumber, encLevel, s.lastNetworkActivityTime); err != nil {
return err
}
s.receivedPacketHandler.IgnoreBelow(s.sentPacketHandler.GetLowestPacketNotConfirmedAcked())
return nil
}
func (s *session) closeLocal(e error) {