From 87bff1abaedcacdf2939dbd15b1c4ea843bc38be Mon Sep 17 00:00:00 2001 From: Ethan Mosbaugh Date: Wed, 25 Oct 2017 10:44:43 -0700 Subject: [PATCH] Closed streams remain in session streams map --- spdy/session.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spdy/session.go b/spdy/session.go index da76b9b..836431e 100644 --- a/spdy/session.go +++ b/spdy/session.go @@ -134,6 +134,13 @@ func (s *Transport) getStream(referenceID uint64) *stream { } +func (s *Transport) removeStream(stream *stream) { + s.streamC.L.Lock() + delete(s.streams, stream.referenceID) + s.streamC.L.Unlock() + s.streamC.Broadcast() +} + // Close closes the underlying stream provider func (s *Transport) Close() error { return s.provider.Close() @@ -240,7 +247,7 @@ func (s *sender) Send(message interface{}) error { // Close closes the underlying stream, causing any subsequent // sends to throw an error and receives to return EOF. func (s *sender) Close() error { - return s.stream.stream.Close() + return s.stream.Close() } // Receive receives a message sent across the channel from @@ -304,5 +311,6 @@ func (s *stream) Write(b []byte) (int, error) { } func (s *stream) Close() error { + defer s.session.removeStream(s) return s.stream.Close() }