From 733633c1a83ca26897a0f9672a91a9865153bbc2 Mon Sep 17 00:00:00 2001 From: xtaci Date: Thu, 1 Sep 2016 23:23:46 +0800 Subject: [PATCH] simplify token return --- session.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/session.go b/session.go index 686cfb5..14576ba 100644 --- a/session.go +++ b/session.go @@ -201,10 +201,10 @@ func (s *Session) recvLoop() { for { select { case <-s.tbf: + s.tbf <- struct{}{} if f, err := s.readFrame(buffer); err == nil { switch f.cmd { case cmdNOP: - s.tbf <- struct{}{} case cmdTerminate: s.Close() return @@ -217,7 +217,6 @@ func (s *Session) recvLoop() { s.sendFrame(newFrame(cmdRST, f.sid)) } s.streamLock.Unlock() - s.tbf <- struct{}{} case cmdRST: s.streamLock.Lock() if _, ok := s.streams[f.sid]; ok { @@ -225,15 +224,14 @@ func (s *Session) recvLoop() { } else { // must do nothing if stream is absent } s.streamLock.Unlock() - s.tbf <- struct{}{} case cmdPSH: s.streamLock.Lock() if stream, ok := s.streams[f.sid]; ok { s.frameQueues[f.sid] = append(s.frameQueues[f.sid], f) stream.notifyReadEvent() + <-s.tbf // remove a token } else { // stream is absent s.sendFrame(newFrame(cmdRST, f.sid)) - s.tbf <- struct{}{} } s.streamLock.Unlock() default: