diff --git a/session.go b/session.go index d5aad972..09dbcf8d 100644 --- a/session.go +++ b/session.go @@ -23,7 +23,6 @@ type receivedPacket struct { } var ( - errReopeningStreamsNotAllowed = errors.New("Reopening Streams not allowed") errRstStreamOnInvalidStream = errors.New("RST_STREAM received for unknown stream") errWindowUpdateOnInvalidStream = errors.New("WINDOW_UPDATE received for unknown stream") errWindowUpdateOnClosedStream = errors.New("WINDOW_UPDATE received for an already closed stream") @@ -249,7 +248,6 @@ func (s *Session) handlePacket(remoteAddr interface{}, hdr *publicHeader, data [ s.receivedPackets <- receivedPacket{remoteAddr: remoteAddr, publicHeader: hdr, data: data} } -// TODO: Ignore data for closed streams func (s *Session) handleStreamFrame(frame *frames.StreamFrame) error { s.streamsMutex.RLock() str, streamExists := s.streams[frame.StreamID] @@ -264,7 +262,8 @@ func (s *Session) handleStreamFrame(frame *frames.StreamFrame) error { str = ss.(*stream) } if str == nil { - return errReopeningStreamsNotAllowed + // Stream is closed, ignore + return nil } err := str.AddStreamFrame(frame) if err != nil { diff --git a/session_test.go b/session_test.go index 55ff8e32..b567945d 100644 --- a/session_test.go +++ b/session_test.go @@ -237,7 +237,7 @@ var _ = Describe("Session", func() { Expect(session.streams[5]).To(BeNil()) }) - It("rejects streams that existed previously", func() { + It("ignores streams that existed previously", func() { session.handleStreamFrame(&frames.StreamFrame{ StreamID: 5, Data: []byte{}, @@ -251,7 +251,7 @@ var _ = Describe("Session", func() { StreamID: 5, Data: []byte{}, }) - Expect(err).To(MatchError(errReopeningStreamsNotAllowed)) + Expect(err).To(BeNil()) }) })