From 4eb72b6c8d386aaa531499e6edb9c5b5484f2a08 Mon Sep 17 00:00:00 2001 From: xtaci Date: Thu, 18 Apr 2019 19:58:34 +0800 Subject: [PATCH] frame version check failure will close connection --- session.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/session.go b/session.go index 88b0b3d..3b25325 100644 --- a/session.go +++ b/session.go @@ -152,8 +152,8 @@ func (s *Session) Close() (err error) { return errors.New(errBrokenPipe) default: close(s.die) - err = s.conn.Close() s.dieLock.Unlock() + err = s.conn.Close() s.streamLock.Lock() for k := range s.streams { s.streams[k].sessionClose() @@ -232,10 +232,11 @@ func (s *Session) recvLoop() { // read header first if _, err := io.ReadFull(s.conn, hdr[:]); err == nil { - if hdr.Version() != version { // just ignore - continue - } atomic.StoreInt32(&s.dataReady, 1) + if hdr.Version() != version { + s.Close() + return + } sid := hdr.StreamID() switch hdr.Cmd() { case cmdNOP: