remove closed streams from BlockedManager

fixes #120
This commit is contained in:
Marten Seemann
2016-05-21 19:19:41 +07:00
parent 398e2f3530
commit bf4aa2dce9
2 changed files with 17 additions and 0 deletions

View File

@@ -605,6 +605,9 @@ func (s *Session) garbageCollectStreams() {
if v == nil {
continue
}
if v.finishedWriting() {
s.blockedManager.RemoveBlockedStream(k)
}
if v.finished() {
s.streams[k] = nil
}

View File

@@ -185,6 +185,20 @@ var _ = Describe("Session", func() {
Expect(session.streams[5]).To(BeNil())
})
It("removes closed streams from BlockedManager", func() {
session.handleStreamFrame(&frames.StreamFrame{
StreamID: 5,
Data: []byte{0xde, 0xca, 0xfb, 0xad},
})
Expect(session.streams[5]).ToNot(BeNil())
session.blockedManager.AddBlockedStream(5, 4)
Expect(session.blockedManager.blockedStreams).To(HaveKey(protocol.StreamID(5)))
err := session.streams[5].Close()
Expect(err).ToNot(HaveOccurred())
session.garbageCollectStreams()
Expect(session.blockedManager.blockedStreams).ToNot(HaveKey(protocol.StreamID(5)))
})
It("closes empty streams with error", func() {
testErr := errors.New("test")
session.handleStreamFrame(&frames.StreamFrame{