diff --git a/session.go b/session.go index 7cc190bd..467c992e 100644 --- a/session.go +++ b/session.go @@ -31,11 +31,6 @@ type receivedPacket struct { rcvTime time.Time } -var ( - errRstStreamOnInvalidStream = errors.New("RST_STREAM received for unknown stream") - errWindowUpdateOnClosedStream = errors.New("WINDOW_UPDATE received for an already closed stream") -) - var ( newCryptoSetup = handshake.NewCryptoSetup newCryptoSetupClient = handshake.NewCryptoSetupClient @@ -548,11 +543,6 @@ func (s *session) handleFrames(fs []wire.Frame, encLevel protocol.EncryptionLeve switch err { case ackhandler.ErrDuplicateOrOutOfOrderAck: // Can happen e.g. when packets thought missing arrive late - case errRstStreamOnInvalidStream: - // Can happen when RST_STREAMs arrive early or late (?) - utils.Errorf("Ignoring error in session: %s", err.Error()) - case errWindowUpdateOnClosedStream: - // Can happen when we already sent the last StreamFrame with the FinBit, but the client already sent a WindowUpdate for this Stream default: return err } @@ -597,7 +587,8 @@ func (s *session) handleMaxStreamDataFrame(frame *wire.MaxStreamDataFrame) error return err } if str == nil { - return errWindowUpdateOnClosedStream + // stream is closed and already garbage collected + return nil } str.UpdateSendWindow(frame.ByteOffset) return nil @@ -609,7 +600,8 @@ func (s *session) handleRstStreamFrame(frame *wire.RstStreamFrame) error { return err } if str == nil { - return errRstStreamOnInvalidStream + // stream is closed and already garbage collected + return nil } return str.RegisterRemoteError(fmt.Errorf("RST_STREAM received with code %d", frame.ErrorCode), frame.ByteOffset) }