From d568d232901be359abab3814ae99c3f1fdff8d6b Mon Sep 17 00:00:00 2001 From: xtaci Date: Thu, 18 Apr 2019 14:09:03 +0800 Subject: [PATCH] fix a potential logic race --- session.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/session.go b/session.go index fafdfc5..88b0b3d 100644 --- a/session.go +++ b/session.go @@ -113,9 +113,14 @@ func (s *Session) OpenStream() (*Stream, error) { } s.streamLock.Lock() - s.streams[sid] = stream - s.streamLock.Unlock() - return stream, nil + defer s.streamLock.Unlock() + select { + case <-s.die: + return nil, errors.New(errBrokenPipe) + default: + s.streams[sid] = stream + return stream, nil + } } // AcceptStream is used to block until the next available stream