mirror of
https://github.com/xtaci/smux.git
synced 2024-04-21 10:51:48 +00:00
make sure streamLock is non-blocking due to receiveBytes
This commit is contained in:
+9
-11
@@ -248,20 +248,18 @@ func (s *Session) recvLoop() {
|
||||
}
|
||||
s.streamLock.Unlock()
|
||||
case cmdPSH:
|
||||
var written int64
|
||||
var err error
|
||||
s.streamLock.Lock()
|
||||
if stream, ok := s.streams[sid]; ok {
|
||||
written, err = stream.receiveBytes(s.conn, int64(hdr.Length()))
|
||||
atomic.AddInt32(&s.bucket, -int32(written))
|
||||
stream.notifyReadEvent()
|
||||
}
|
||||
stream := s.streams[sid]
|
||||
s.streamLock.Unlock()
|
||||
|
||||
// read data error
|
||||
if err != nil {
|
||||
s.Close()
|
||||
return
|
||||
if stream != nil {
|
||||
written, err := stream.receiveBytes(s.conn, int64(hdr.Length()))
|
||||
atomic.AddInt32(&s.bucket, -int32(written))
|
||||
stream.notifyReadEvent()
|
||||
if err != nil {
|
||||
s.Close()
|
||||
return
|
||||
}
|
||||
}
|
||||
default:
|
||||
s.Close()
|
||||
|
||||
Reference in New Issue
Block a user