remove closed streams from session

This commit is contained in:
Lucas Clemente
2016-04-25 16:56:07 +02:00
parent f8b804d2c1
commit e253cbe02f
4 changed files with 77 additions and 10 deletions

View File

@@ -1,6 +1,8 @@
package quic
import (
"io"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
@@ -56,11 +58,35 @@ var _ = Describe("Session", func() {
})
It("closes streams", func() {
session.handleStreamFrame(&frames.StreamFrame{
StreamID: 5,
Data: []byte{0xde, 0xca, 0xfb, 0xad},
FinBit: true,
})
Expect(session.Streams).To(HaveLen(1))
Expect(session.Streams[5]).ToNot(BeNil())
Expect(callbackCalled).To(BeTrue())
p := make([]byte, 4)
_, err := session.Streams[5].Read(p)
Expect(err).To(Equal(io.EOF))
Expect(p).To(Equal([]byte{0xde, 0xca, 0xfb, 0xad}))
Expect(session.Streams).To(HaveLen(1))
Expect(session.Streams[5]).To(BeNil())
})
It("rejects streams that existed previously", func() {
session.handleStreamFrame(&frames.StreamFrame{
StreamID: 5,
Data: []byte{},
FinBit: true,
})
_, err := session.Streams[5].Read([]byte{0})
Expect(err).To(Equal(io.EOF))
err = session.handleStreamFrame(&frames.StreamFrame{
StreamID: 5,
Data: []byte{},
})
Expect(err).To(MatchError("Session: reopening streams is not allowed"))
})
})
})