diff --git a/h2quic/server_test.go b/h2quic/server_test.go index 67799f1a..a3e642ce 100644 --- a/h2quic/server_test.go +++ b/h2quic/server_test.go @@ -38,6 +38,9 @@ func (s *mockSession) AcceptStream() (utils.Stream, error) { func (s *mockSession) OpenStream() (utils.Stream, error) { panic("not implemented") } +func (s *mockSession) OpenStreamSync() (utils.Stream, error) { + panic("not implemented") +} func (s *mockSession) Close(e error) error { s.closed = true s.closedWithError = e diff --git a/interface.go b/interface.go index 7d7a1300..c8b1af96 100644 --- a/interface.go +++ b/interface.go @@ -15,9 +15,8 @@ type Session interface { // guaranteed to return the smallest unopened stream // special error for "too many streams, retry later" OpenStream() (utils.Stream, error) - // TODO: implement this // blocks until a new stream can be opened, if the maximum number of stream is opened - // OpenStreamSync() (utils.Stream, error) + OpenStreamSync() (utils.Stream, error) RemoteAddr() net.Addr Close(error) error } diff --git a/server_test.go b/server_test.go index 546048e0..dc867e93 100644 --- a/server_test.go +++ b/server_test.go @@ -38,6 +38,9 @@ func (s *mockSession) AcceptStream() (utils.Stream, error) { func (s *mockSession) OpenStream() (utils.Stream, error) { return &stream{streamID: 1337}, nil } +func (s *mockSession) OpenStreamSync() (utils.Stream, error) { + panic("not implemented") +} func (s *mockSession) RemoteAddr() net.Addr { panic("not implemented") } diff --git a/session.go b/session.go index c49d5625..17555d96 100644 --- a/session.go +++ b/session.go @@ -681,6 +681,10 @@ func (s *session) OpenStream() (utils.Stream, error) { return s.streamsMap.OpenStream() } +func (s *session) OpenStreamSync() (utils.Stream, error) { + return s.streamsMap.OpenStreamSync() +} + func (s *session) queueResetStreamFrame(id protocol.StreamID, offset protocol.ByteCount) { s.packer.QueueControlFrameForNextPacket(&frames.RstStreamFrame{ StreamID: id, diff --git a/session_test.go b/session_test.go index 7a77c8f9..c25f028e 100644 --- a/session_test.go +++ b/session_test.go @@ -1240,6 +1240,13 @@ var _ = Describe("Session", func() { _, ok := str.(utils.Stream) Expect(ok).To(BeFalse()) }) + + // all relevant tests for this are in the streamsMap + It("opens streams synchronously", func() { + str, err := sess.OpenStreamSync() + Expect(err).ToNot(HaveOccurred()) + Expect(str).ToNot(BeNil()) + }) }) Context("counting streams", func() {